一个关于ADOTABLE的问题!很是着急的?我会多多给分的
下面是我写的代码procedure Tf_rzgl.BitBtn4Click(Sender: TObject);
begin
close;
end;
procedure Tf_rzgl.cxClick(Sender: TObject);
var
yh,tempsql,qsdate,zzdate:string;
begin
qsdate:=trim(qsrq.Text);
zzdate:=trim(zzrq.Text );
if zzdate<qsdate then
begin
showmessage('终止日期必须大于起始日期,请重新输入!');
qsrq.SetFocus ;
exit;
end;
yh:=xzyh.Text ;
//tempsql:='log_date>='''+qsdate+''' and log_date<='''+zzdate+'''';
if yh='全部用户' then
begin
{ tempsql:=tempsql+' and log_name='''+yh+'''';
showmessage(tempsql);
end;
adotable1.Active:=true;
with adotable1 do
begin
try
Close ;
filter:=tempsql;
filtered:=true;
open;
except
showmessage('访问数据库出错');
exit;
end;
end;
其功能是把qsdate 和zzdate 日期之间的记录查询出来,运行时会报的错误是
数据库提供程序或其它服务返回E_FAIL状态
问题点数:0、回复次数:7Top
1 楼zsjzwj(北极熊)回复于 2003-12-03 00:14:16 得分 0
用
tempsql:='log_date between'+quotedstr(qsdate)+' and '+quotedstr(zzdate);
Top
2 楼angle097113(深思不解)回复于 2003-12-03 01:05:20 得分 0
你的qsdate是字符串的 你没有转化成日期的类型的数据吧!
为什么比较日期的时候不用dantetimepicker控件 要用edit呢?
Top
3 楼hatedeadlock(雪男孩(41289435))回复于 2003-12-03 03:09:28 得分 0
用CAST这个语句就可以了Top
4 楼47522341(睡到8:30)回复于 2003-12-03 07:46:51 得分 0
首先;同意楼上们;
然后;好像可以考虑在设置filter前先将filtered属性设置为false;
with adotable1 do
begin
try
Close ;
filtered := false;
filter:=tempsql;
filtered:=true;
open;
except
showmessage('访问数据库出错');
exit;
end;Top
5 楼delphiseabird(沙鸥)回复于 2003-12-03 08:21:29 得分 0
qsdate 这两个变量好像不是日期型的呀Top
6 楼delphiseabird(沙鸥)回复于 2003-12-03 08:24:41 得分 0
between'+quotedstr(qsdate)+' and '+quotedstr(zzdate);
也是不好的 有可能友边界问题Top
7 楼qiangqiang228(xiaoxiong)回复于 2003-12-03 15:00:03 得分 0
多谢各位的帮忙Top




