含有时间字段的SQL语句............(100分)

  • 主题发起人 主题发起人 xiaosha_2000
  • 开始时间 开始时间
X

xiaosha_2000

Unregistered / Unconfirmed
GUEST, unregistred user!
下面是一个用于查询的条件字符串,数据库是paradox ,其中attdate时间类型.查询时出错
提示:类型不匹配。请指教。为什么出现这种问题?如何修改?
ConditionStr:=ConditionStr+ ' attdate>='+datetostr(datetimepicker1.date)+'';
ConditionStr:=ConditionStr+' AND attdate<='+datetostr(datetimepicker2.date)+'';
 

ConditionStr:=ConditionStr+ ' attdate>='''+datetostr(datetimepicker1.date)+'''';
ConditionStr:=ConditionStr+' AND attdate<='''+datetostr(datetimepicker2.date)+'''';
try 1 try
 
给QUERY加个日期型的参数
然后
query.parambyname('paramname').value:=DateTimePicker.date
 
改为:
ConditionStr:=ConditionStr+ ' attdate>=:date1 ';
ConditionStr:=ConditionStr+' AND attdate<=:date2 ';
。。。。。。。。。。。。。。。
。。。。。。。。。。。。。。。。
Query1.ParamByName('date1 ').AsDateTime:=datetimepicker1.date;
Query1.ParamByName('date1 ').AsDateTime:=datetimepicker2.date;

Try ~
 
dhl2001:早已试过,不行。

eagleblue,jrq 用参数当然可以解决,不过我的要求是在SQL语句中直接用变量的形式
来解决。
 
function MakeSqlDate (const dt: TDateTime): String;
var
y, m, d: WORD;
begin
DecodeDate (dt, y, m, d);
Result := '''' + IntToStr (m) + '/' + IntToStr (d) + '/' + IntToStr (y)
+ '''';
end;

ConditionStr:=ConditionStr+' attdate>='+MakeSqlDate(datetimepicker1.date)+' ';
ConditionStr:=ConditionStr+' AND attdate<='+MadkSqlDate(datetimepicker2.date)+' ';
 
ConditionStr:=ConditionStr+ ' attdate>=:'+變量名01+'';
ConditionStr:=ConditionStr+' AND attdate<=:'+變量名02+'';
在解決問題時我的變量名是用的靈活的,那就是把這一段代碼做成一個函數,跟著調用這段
代碼時把當前的控件名給附在一起!到時再做變量名嘛!這樣也不會重復!蜚好的呢!
付值呢:
[在這你得取得Query有多少個變量,且每個變量的名字]
Eiooutiddata.ParamByName('字段名').Asdatetime:=strtodate(變量名01); //我的當時用的"變量名"時還是取的這個變量名所對應的操什的Text值

兄弟這個問題我前兩天才解決呢!
你必需定義一個變量才行啊!否則沒得搞,如果你所做的同我一樣那以上一定能解決!如果你的
變量名還是定死了的話,那就應該更沒問題了
 
xkliu:结果正确(送50分)。还有一个问题是为什么要这么写,SQL语句中的那些单引号和
加号究竟是什么意思、起什么作用?谢谢!
 
在Delphi语法中单引号'之前要再加一个单引号'才能表示一个单引号',比如字符串
abc要写成'abc',ab'c要写成'ab''c',至于字符串'则要写成''''.
几个字符串相加要用+号,如'ab'''+'c'就是ab'c
 
用FormatDateTime('mm"/"dd"/"yyyy',Date)是一下
 
在区域设置中将系统日期格式改为yyyy-MM-dd
 
ConditionStr:=ConditionStr+' attdate>=#'+datetostr(datetimepicker1.date)+'#';
ConditionStr:=ConditionStr+' AND attdate<=#'+datetostr(datetimepicker2.date)+'#';
记住,日期字符前后都应加#号。
 
多人接受答案了。
 

Similar threads

回复
0
查看
1K
不得闲
S
回复
0
查看
1K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
927
SUNSTONE的Delphi笔记
S
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
后退
顶部