帮帮忙,先谢了
AnsiString s="select * from Remind where Date = :TheDate" ;
Query1->Active=false;
Query1->SQL->Clear();
Query1->SQL->Add(s);
Query1->Prepare();
Query1->ParamByName("TheDate")->AsString=Edit1->Text;
Query1->ExecSQL();
Query1->Open();
运行的时候老是出错。可是我把s改为:select * from Remind 的时候就可以正确打开了。是不是可变参数的设置错了。
问题点数:50、回复次数:9Top
1 楼huangjuliang(学习,学习,再学习!)回复于 2003-11-03 12:07:43 得分 25
TheDate是不是时间类型?
是的话,这样写好了~
AnsiString s="select * from Remind where Date = #"+Edit1->Text.Trim()+"#";
Query1->Active=false;
Query1->SQL->Clear();
Query1->SQL->Add(s);
Query1->Prepare();
Query1->ExecSQL();
Query1->Open();
试一下,对于时间,不同的数据库会有所不同的
有些数据库是用 # ,有的用 ' 的 !
Top
2 楼ganlnyn(e我行)回复于 2003-11-03 12:13:16 得分 25
如果Date在数据库中是DateTime类型的,你最好如下:
AnsiString s="select * from Remind where Date = :TheDate" ;
Query1->Active=false;
Query1->SQL->Clear();
Query1->SQL->Add(s);
Query1->Prepare();
Query1->ParamByName("TheDate")->AsDateTime=TDateTime(Edit1->Text);
Query1->ExecSQL();
Query1->Open();
因为有的数据库并不支持按时间按字符串来访问!
Top
3 楼ppgo(掉得大)回复于 2003-11-03 12:21:18 得分 0
upTop
4 楼mengge(踏岸寻柳)回复于 2003-11-03 12:56:55 得分 0
你这种方式要求数据类型严格一致。
如果还不行的话,可以采用直接拼接SQL语句的方法。Top
5 楼chifengwatch(chifengwatch)回复于 2003-11-03 13:43:30 得分 0
同意ganlnyn(e我行)Top
6 楼Yans(跟贴是一种友谊)回复于 2003-11-03 15:25:55 得分 0
Date好像是数据库中的已经用了的,自己不能再定义了。在oracle中是这样的Top
7 楼cenphoenix(火凤凰)回复于 2003-11-03 19:47:32 得分 0
不是,我把它转成string 类型了,为什么用select * from Remind可以打开,可是加了可变参数后就不行了??Top
8 楼cenphoenix(火凤凰)回复于 2003-11-03 22:10:16 得分 0
没人回答,自己帮自己upTop
9 楼cenphoenix(火凤凰)回复于 2003-11-06 10:55:02 得分 0
upTop




