标准表达式中数据类型不匹配
AnsiString cEndTime = FormatDateTime("yyyy-mm-dd",Now());
Form1->ArrayType="TerminalType,Building,Unit,Storey,Room,TNum";
DataModule35->qry3->Close();
DataModule35->qry3->SQL->Clear();
DataModule35->qry3->SQL->Add("Select " + Form1->CdtCol + " from cdtinfo");
DataModule35->qry3->SQL->Add(" where ComputerNo = :ComputerNo and (TerminalType = 3 or TerminalType = 4)");
DataModule35->qry3->SQL->Add(" and Address in (select Author from CardAuthor where CardNo in(Select CardNo from Card where EndTime <= :cEndTime))");
DataModule35->qry3->Parameters->ParamByName("cEndTime")->Value = cEndTime;
提示"标准表达式中数据类型不匹配",Card表中EndTime是 日期/时间 型的。
我记得以前这样用过,没出现过什么错误啊,这次就不行了,不知道为什么。
[解决办法]
DataModule35->qry3->Parameters->ParamByName("cEndTime")->Value = StrToDateTime( cEndTime);
这样试试
[解决办法]
本帖最后由 ccrun 于 2012-03-10 14:37:18 编辑 SQL语句中直接用字符串试试:
AnsiString cEndTime = FormatDateTime("yyyy-mm-dd", Now());
String strSQL = String().sprintf("Select %s from cdtinfo"
" where ComputerNo = :ComputerNo and (TerminalType = 3 or TerminalType = 4"
" and Address in (select Author from CardAuthor where CardNo in "
"(Select CardNo from Card where EndTime <= '%s')))",
Form1->CdtCol, cEndTime);
DataModule35->qry3->Close();
DataModule35->qry3->SQL->Text = strSQL;
...
如果数据库是Access,则要将单引号换成#号