关于日起类型查询及有关bde的问题(50分)

  • 主题发起人 主题发起人 woshilu
  • 开始时间 开始时间
W

woshilu

Unregistered / Unconfirmed
GUEST, unregistred user!
我再根据日期类型查询时总出现错误,不知怎么解决。
有关代码如下:
case 查询条件 of
3: begin
SQL.Add('select * from pdmprogramm where sdate=:ev' );


Params[0].AsDate:=dt2;
open;
end;
4: begin
SQL.Add('select * from pdmprogramm where edate=:ev' );
Params[0].AsDate:=dt3;
open;
end;
end;
str1:=IntToStr( DataModule8.Query2m.RecordCount);
labelcnt.Caption:=str1;
dt2,dt3是从日立控件的date属性取得的,如下:
procedure TForm6.dtpk2CloseUp(Sender: TObject);
begin
if ComboBox2.ItemIndex=3
then dt2:=dtpk2.Date;
if ComboBox2.ItemIndex=4
then dt3:=dtpk2.Date;

end;
当我查询时出现“不正确的日期格式“错误
当我把 Params[0].AsDate:=dt2; Params[0].AsDate:=dt3;、改为:
Params[0].AsDateTime:=dt2; Params[0].AsDateTime:=dt3;
时查询结果显示总是0,
为什么出现这种情况,请问怎么解决。
另外,我一遇到调试错误时,就会提示“bde出错“,我的delphi就必须从新启动,
错误严重时,程序打不开了,需要从新安装'BDE',
请问这是怎么回时?是我bde没配置好吗?
我用的是delphi+bde+odbc+sql server 7.0.
分数不多,请多多包含!
 
bde erro $000f
 
TDateTime是个浮点数,你用=来作为查询条件的话,数据库中可能是1890.28659034,而你的查询
条件转换后可能是1890.28659031,这样当然不等了。
用浮点型一般只用于between,>=,<=这样查询的。
AsDate可能只是整形吧所以出错了。

BDE的问题你试试到Borland的网站上下载升级版,可能会解决。
如果是D5或以上版本,访问M$的数据库就不要用BDE了,用ADO会好很多。
 
要用AsDateTime,不可以用AsDate,SQL Server中没有Date类型的
查不到,可能是因为时间部分的问题,你要么用时间日期函数作一下处理
 
不建议你如此使用。
由于客户机的日期格式是可以调整的,而数据库中的日期格式也是可以设置的。为了避免
两方面日期格式的冲突,你的需求最好以字符串作为中间变量进行格式转换。不要直接
使用日期型参数进行参数传递。
 
用ss:='select * from pdmprogramm where edate=%s'
format(ss,[ev])
 
我是菜鸟,大家具体点吧
 
后退
顶部