在sql查询分析器中运行正确,在delphi中报错

来源:互联网  时间:2016/7/16 6:31:13

关于网友提出的“ 在sql查询分析器中运行正确,在delphi中报错”问题疑问,本网通过在网上对“ 在sql查询分析器中运行正确,在delphi中报错”有关的相关答案进行了整理,供用户进行参考,详细问题解答如下:

问题: 在sql查询分析器中运行正确,在delphi中报错
描述:

Aquery := TMyquery.Create;
  try
    if strtoint(AskStruct.jyfs) = 0 then
    begin
      L_sql := g_sf_field
        +' where ljbh = ''' + trim(StrPas(AskStruct.sfzsy))
        + ''' and jffs in (1,2,3,5) and sfbj = 0 and dybj = -1'
        + ' and qf > 0'
        + ' and jzjfrq > DATEADD(day,-30,getdate())'
//        + ' and (jzjfrq > getdate() or (jzjfrq is null and '
//        + ' getdate() < (select dateadd(day,jfqx,yyb_cb_no.dyrq) from NO_ggxs_no)))'
      ;
      Aquery.Close;
      Aquery.SQL.Clear;
      Aquery.SQL.Add(L_sql);
      try
        Aquery.Open;
      except
        ReSult := FALSE;
        Exit;
      end;
//////////////////////////
L-SQl在SQLSERVER的sql查询分析器中运行正确
delphi报错...BDE...无效的key...day,-30,getdate())
为什么?


解决方案1:

有关日期,你看:
procedure TForm1.Button1Click(Sender: TObject);
var
  Present: TDateTime;
  Year, Month, Day, Hour, Min, Sec, MSec: Word;
 begin
  Present:= Now;
  DecodeDate(Present, Year, Month, Day);
  Label1.Caption := 'Today is Day ' + IntToStr(Day) + ' of Month '
    + IntToStr(Month) + ' of Year ' + IntToStr(Year);
  DecodeTime(Present, Hour, Min, Sec, MSec);
  Label2.Caption := 'The time is Minute ' + IntToStr(Min) + ' of Hour '
    + IntToStr(Hour);
end;

解决方案2:

//        + ' and (jzjfrq > getdate() or (jzjfrq is null and '
//        + ' getdate() < (select dateadd(day,jfqx,yyb_cb_no.dyrq) from NO_ggxs_no)))'
这里的有问题 你仔细看看了 还有 BDE 中支持 day,getdate()这样的函数

解决方案3:

改用ADO吧,ADO直接吧SQL语句送到数据库中执行,BDE有时有问题。

解决方案4:

day,getdate()两个函数在Delphi中不识别。你需要直接赋值,可定义参数,然后赋值改参数。

解决方案5:

从代码看,你的query并没有指定数据库!

解决方案6:

g_sf_field 这是什么 ?

解决方案7:

将getdate用delphi 的date的值替换;或者将dateadd改用datediff试一试。

解决方案8:

up,太杂了,

上一篇Query查询小问题﹖
下一篇怎样取得Excel里数据的总行数
明星图片
相关文章
《 在sql查询分析器中运行正确,在delphi中报错》由码蚁之家搜集整理于网络,
联系邮箱:mxgf168#qq.com(#改为@)