一样的问题在:http://community.csdn.net/Expert/topic/3716/3716926.xml?temp=.6074335
begin
//日
if Indx=0 then
begin
SQLStr:=SQLStr+'where '+LUFieldName+' = To_Date('+
''''+FormatDateTime('yyyy-mm-dd',dtLUDate.Date)
+''''+','+''''+'yyyy-mm-dd'+''')';
end;
//月
if Indx=1 then
begin
SQLStr:=SQLStr+' and '+LUFieldName+' Between To_Date('+
''''+FormatDateTime('yyyy-mm',dtLUDate.Date)+'-01'+''''+','+
''''+'yyyy-mm-dd'+''''+')'+
' and To_Date('+
''''+FormatDateTime('yyyy-mm',dtLUDate.Date)+
IntToStr(DaysInMonth(dtLUDate.Date))+''+''''+','+
''''+'yyyy-mm-dd'+''''+')';
end;
//年
if Indx=2 then
begin
SQLStr:=SQLStr+' and '+LUFieldName+' Between To_Date('+
''''+FormatDateTime('yyyy',dtLUDate.Date)+'-01-01'+''''+','+
''''+'yyyy-mm-dd'+''''+')'+
' and To_Date('+
''''+FormatDateTime('yyyy',dtLUDate.Date)+'-12-31'+''''+','+
''''+'yyyy-mm-dd'+''''+')';
end;
这是代码的一部分,是根据年或月或日查询,为什么根据年和月查询时提示:语句为正确结束。
谢谢各位了
begin
//日
if Indx=0 then
begin
SQLStr:=SQLStr+'where '+LUFieldName+' = To_Date('+
''''+FormatDateTime('yyyy-mm-dd',dtLUDate.Date)
+''''+','+''''+'yyyy-mm-dd'+''')';
end;
//月
if Indx=1 then
begin
SQLStr:=SQLStr+' and '+LUFieldName+' Between To_Date('+
''''+FormatDateTime('yyyy-mm',dtLUDate.Date)+'-01'+''''+','+
''''+'yyyy-mm-dd'+''''+')'+
' and To_Date('+
''''+FormatDateTime('yyyy-mm',dtLUDate.Date)+
IntToStr(DaysInMonth(dtLUDate.Date))+''+''''+','+
''''+'yyyy-mm-dd'+''''+')';
end;
//年
if Indx=2 then
begin
SQLStr:=SQLStr+' and '+LUFieldName+' Between To_Date('+
''''+FormatDateTime('yyyy',dtLUDate.Date)+'-01-01'+''''+','+
''''+'yyyy-mm-dd'+''''+')'+
' and To_Date('+
''''+FormatDateTime('yyyy',dtLUDate.Date)+'-12-31'+''''+','+
''''+'yyyy-mm-dd'+''''+')';
end;
这是代码的一部分,是根据年或月或日查询,为什么根据年和月查询时提示:语句为正确结束。
谢谢各位了
解决方案 »
- 新手向各位请教一个很初级问题,不要笑话,望指教
- 用程序来创建表?
- delphi如何在菜单栏前加入位图?
- 如何在菜单左边显示一张图片?
- 在delphi里,如何用0和1的字符串为系统分配权限,请给出代码
- api里有类似net send命令的函数吗?
- 请教:如何把'.jpg'格式的字段内容在报表里显示出来?
- 在intetface中用uses与在implementation中用uses有什么区别
- 求助:InstallShield???
- DELPHI问题大观(1):在中国的程序员,有多少delphi程序员?又有多少delphi高手?(null)
- 紧急求助,如何定时删除文件夹?
- 超级初学者提一个问题,各位大哥请帮忙
说说你的目的
试试其他的方法啊用like吧
var
dt_Date : TDateTime;
indx : Integer;
SQLStr : String;
begin
SQLStr := 'select * FROM sysobjects Where 1=1';
case Indx of
0: SQLStr := SQLStr+' and datediff(day,crdate,'''+DateToStr(dt_Date)+''')';
1: SQLStr := SQLStr+' and datediff(month,crdate,'''+DateToStr(dt_Date)+''')';
2: SQLStr := SQLStr+' and datediff(year,crdate,'''+DateToStr(dt_Date)+''')';
end;
with ADOQuery1 do
begin
SQL.Clear;
SQL.Text;
Open;
end;
没调试
你自己看正确不?crdate是表的日期字段
应该这样
var
dt_Date : TDateTime;
indx : Integer;
SQLStr : String;
begin
indx := 2;
dt_Date:=Now;
SQLStr := 'select * FROM sysobjects Where 1=1';
case Indx of
0: SQLStr := SQLStr+' and datediff(day,crdate,'''+DateToStr(dt_Date)+''')=0';
1: SQLStr := SQLStr+' and datediff(month,crdate,'''+DateToStr(dt_Date)+''')=0';
2: SQLStr := SQLStr+' and datediff(year,crdate,'''+DateToStr(dt_Date)+''')=0';
end;
ShowMessage(SQLStr);
with ADOQuery1 do
begin
SQL.Clear;
SQL.Text:=SQLStr;
Open;
end;
end;