首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ Builder >

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

2013-10-21 
标准表达式中数据类型不匹配AnsiString cEndTime FormatDateTime(yyyy-mm-dd,Now())Form1-ArrayType

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


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

热点排行