在线等,BDE连接Oracle中的日期字段问题,

hmily1688 2005-06-27 05:06:33
用BDE连接Oracle,用UpdateSql来更改数据库,其中Query已经设成了cachedupdate形式。其中UpdateSQL中已经设好要更改的数据库字段。程序代码如下。
var i :Integer;
query1.close;
query1.sql.text:='select * from r1001 ';
query1.open;
if not database1.intransaction then database1.starttrans;
while not query1.eof do
begin
Edit;
inc(i);
if i mod 2=0 then
begin
query1.FieldByName('myDate').AsVariant:=strToDate('2005-6-10 10:10:00');
end
else
begin
query1.FieldByName('myDate').AsVariant:=Null;
end
next;
end;
try
query1.applyupdates;
database1.commit;
except
query1.cancelUPdates;
database1.rollbacktrans;
raise;
end;
query1.commitUpdates;
可问题是在库中字段本来结果应为空的在数据库中变成了0000-00-00,谁能告诉我为什么,数据库为Oracle8i.delphi版本为D6


...全文
106 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
lovend 2005-06-27
  • 打赏
  • 举报
回复
幫你頂
hmily1688 2005-06-27
  • 打赏
  • 举报
回复
自己再顶一下。
hmily1688 2005-06-27
  • 打赏
  • 举报
回复
兄弟我写错了,我试过N多写法了。
query1.FieldByName('myDate').AsDateTime:=strToDateTime('2005-6-10 10:10:00');
query1.FieldByName('myDate').Value:=Null;
query1.FieldByName('myDate').AsVariant:=Null;
abcde52511 2005-06-27
  • 打赏
  • 举报
回复
query1.FieldByName('myDate').AsVariant:=strToDate('2005-6-10 10:10:00')
得到的就是日期而不是时间,你用strtodatetime('2005-6-10 10:10:00');
而且你这样能编译过么?
最好在付值时别这样转换,你都用ASVARIANT,还干吗转换呢?
hmily1688 2005-06-27
  • 打赏
  • 举报
回复
别告诉我让我改用ADO连接数据库啊,这是一个老程序了,改不起也,哈哈,我用ADO试了,这种操作没有问题。谁能告诉我用BDE如何处理这种问题。

2,507

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧