sql 语句问题!

ma1218 2004-07-05 10:33:12
数据库是access ,请问我这条sql 语句怎么行不通呢?
Var
Sql_Str:String;
D1,D2:TDateTime;
begin
D1:=DBeginDate.DateTime ;
D2:=EEndDate.DateTime;
Sql_Str:='Select Code_id Code_Type ,Frim_id , Pro_Name from BaseInfo
Where Apply_Date between :D1 and :D2 ';
if Trim(CodeN.Text)<>'' then
Sql_Str:=Sql_Str+' and Code_id like ''%'+CodeN.Text+'%''';
if Trim(CodeType.Text)<>'' then
Sql_Str:=Sql_Str+' and Code_Type like ''%'+CodeType.Text+'%''';
if Trim(CorPoration.Text)<>'' then
Sql_Str:=Sql_Str+' and CorPoration like ''%'+CorPoration.Text+'%''';
if Trim(FrimEdt.Text)<>'' then
Sql_Str:=Sql_Str+' and Frim_id Like ''%'+FrimEdt.Text+'%''';
Sql_Str:=Sql_Str+' order by Code_id ';
With DM.InsertInfoQue do
begin
Close;
Sql.Clear;
Sql.Add(Sql_Str);
Parameters.ParamByName('D1').Value:=Min(D1, D2);
Parameters.ParamByName('D2').Value:=Max(D1, D2);
Open;
end;
...全文
126 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
huangy0153 2004-07-09
  • 打赏
  • 举报
回复
showmessage(sql_str) 把的到的结果贴出来看看
wychero 2004-07-09
  • 打赏
  • 举报
回复
同意 cronuz(cronus) 。
cronuz 2004-07-08
  • 打赏
  • 举报
回复
在TADOQuery中定義参数名時、要明確定義参数類型...
ma1218 2004-07-08
  • 打赏
  • 举报
回复
cronuz(cronus) ( ) 信誉:100
为什么要这样做呢?
ma1218 2004-07-08
  • 打赏
  • 举报
回复
请问:为什么这样行呢?
cronuz 2004-07-05
  • 打赏
  • 举报
回复
Sorry, 上述SQL句多了一個like

Sql_Str:=Sql_Str+' and Code_id like :CodeVar ';
cronuz 2004-07-05
  • 打赏
  • 举报
回复
Sql_Str:=Sql_Str+' and Code_id like like :CodeVar ';
{...}
Parameters.ParamByName('CodeVar').Value := '%'+trim(CodeN.Text)+'%';

(注:Like句也写成参数方式)

jacket008 2004-07-05
  • 打赏
  • 举报
回复
调试的时候,你在DM.InsertInfoQue的open之加showmessage(Sql_Str);


仔细看一下Sql_Str就很清楚了
dupeng0715 2004-07-05
  • 打赏
  • 举报
回复
第一:第7行,select code_id后面应加","
第二:试试将apply_date between :d1 and :d2 改为 apply_date>=:d1 and apply_date<=:d2。 或者将between放到语句的最后。
TechnoFantasy 2004-07-05
  • 打赏
  • 举报
回复
你不要贴代码,直接将最后生成的Sql_Str贴出来就很明了了。
cronuz 2004-07-05
  • 打赏
  • 举报
回复
with ADOQuery1 do begin
{...}
Parameters.Clear;
Parameters.AddParameter.Name := 'D1';
Parameters.AddParameter.Name := 'D2';
Parameters.ParamByName('D1').DataType := ftTime; //定義類型試試
Parameters.ParamByName('D2').DataType := ftTime;
{...}
end;
ma1218 2004-07-05
  • 打赏
  • 举报
回复
以上均无法实现,因为我再库中定义的是日期/时间类型。编译时系统提示:表达式中类型不匹配!还需请教高手。谢谢!

2,498

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧