读书人

标准表达式中数据类型不匹配解决办法

发布时间: 2013-10-21 17:03:30 作者: rapoo

标准表达式中数据类型不匹配


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,则要将单引号换成#号

读书人网 >C++ Builder

热点推荐