关于网友提出的“ 在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;
// + ' and (jzjfrq > getdate() or (jzjfrq is null and '
// + ' getdate() < (select dateadd(day,jfqx,yyb_cb_no.dyrq) from NO_ggxs_no)))'
这里的有问题 你仔细看看了 还有 BDE 中支持 day,getdate()这样的函数
改用ADO吧,ADO直接吧SQL语句送到数据库中执行,BDE有时有问题。
解决方案4:day,getdate()两个函数在Delphi中不识别。你需要直接赋值,可定义参数,然后赋值改参数。
解决方案5:从代码看,你的query并没有指定数据库!
解决方案6:g_sf_field 这是什么 ?
解决方案7:将getdate用delphi 的date的值替换;或者将dateadd改用datediff试一试。
解决方案8:up,太杂了,