帮忙测试一下,是Oracle的问题吗,还是?比较着急的,客户那里出了故障,谢谢!

angle097113 2006-01-19 03:19:09
环境Delphi7+Oracle,使用BDE连接
数据库中表Test两个字段分别是ID(number类型),sysDate(日期类型)
Delphi用到DataBase,Query,UpdateSQL和一个Button
DataBase通过BDE连接数据库
Query连接DataBase其中SQL语句为:SELECT * FROM TEST,它的UpdateObject属性设置为UpdateSQL控件
UPdateSQL的InsertSQL属性为:INSERT INTO TEST VALUES(:ID,:sysDate)
然后在按钮事件中
with Query1 do
begin
if Not Active then
Active := True;
Append;
Fields[0].AsString := '1';
Fields[1].AsString := '';
Post;
Append;
Fields[0].AsString := '2';
Fields[1].AsString := DateToStr(Date);
Post;
end;
不知道为什么sysDate字段一个值都没有插进去呢?
...全文
194 21 打赏 收藏 转发到动态 举报
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
NightCloud 2006-01-20
  • 打赏
  • 举报
回复
根据你给的限定条件进行测试,代码中没加入query.applyupdate时不能往数据库中加数据,加入query.applyupdate后测试成功。我的环境d6+oracle9i。
btw:字段名还是sysdat
angle097113 2006-01-20
  • 打赏
  • 举报
回复
To:NightCloud()

真是奇怪的很啊,我这里还是不行啊,还是不行,字段名称我也修改了,晕死了
NightCloud 2006-01-20
  • 打赏
  • 举报
回复
我也不知道怎么回事了,换换odbc用的驱动试试?一般有microsoft提供的驱动和oracle自己提供的驱动
lvjack 2006-01-19
  • 打赏
  • 举报
回复
同意 netsys2
这个是oracle使用的问题,oracle中date类型字段的数据插入和比较必须用to_date转换一下
angle097113 2006-01-19
  • 打赏
  • 举报
回复
To:
NightCloud()

不好意思啊,还有几个额外的条件,帮忙再测试一下,

1,数据集的CachedUpdate必须是True,所以最后需要ApplyUpdate,因为我需要开启缓存模式,

在产生错误的时候可以回滚,

2,数据集的RequestLive属性是False,只有这样才需要UpdateSQL的,

3,数据库必须是ORACLE

再综合开始的条件测试一下,十分感谢!
NightCloud 2006-01-19
  • 打赏
  • 举报
回复
要不,你换个字段名试试?
NightCloud 2006-01-19
  • 打赏
  • 举报
回复
对的。直接代码拷贝
angle097113 2006-01-19
  • 打赏
  • 举报
回复
To:
NightCloud() 不可能啊,我怎么测试都是插不进去的啊,

你确实是按照我的方案测试的吗,用到updatesql控件了吗?
Dlwxn 2006-01-19
  • 打赏
  • 举报
回复
我的机器用BDE测试可以通过,但是程序死活就连接不上ORACLE。ADO的连接方式可以。
NightCloud 2006-01-19
  • 打赏
  • 举报
回复
我把sysDate,换成sysdat,根据你的设置和代码,测试成功。
环境:d6+oracle9
angle097113 2006-01-19
  • 打赏
  • 举报
回复
你们说的意思我明白,我的意思是按照我的意思去测试一下,看看是什么问题呢,
todouwang 2006-01-19
  • 打赏
  • 举报
回复
with Query1 do
begin
if Not Active then
Active := True;
Append;
Fields[0].AsString := '1';
Fields[1].AsString := '';
Post;
Append;
Fields[0].AsString := '2';
Fields[1].AsString := DateToStr(datetimepicker1.Date);
Post;
end;
//可以操作
Dlwxn 2006-01-19
  • 打赏
  • 举报
回复
直接用 Fields[1].AsDate := Date; 不可以吗?

或者用netsys2(来电!) 的to_date函数
todouwang 2006-01-19
  • 打赏
  • 举报
回复
requestlive:=true
todouwang 2006-01-19
  • 打赏
  • 举报
回复
procedure TForm1.Button1Click(Sender: TObject);
begin
query1.Active:=true;
query1.Append;
query1.Fields[0].AsString:=edit1.Text;
query1.Fields[1].AsString:=edit2.Text;
query1.post;
end;
angle097113 2006-01-19
  • 打赏
  • 举报
回复
To NightCloud() :
不是的,这个可以随意换,我只是随便写的。
angle097113 2006-01-19
  • 打赏
  • 举报
回复
我刚才去掉UpdateSQL这个控件测试了一下是没有问题的
大家可以看看是不是这个控件哪里的问题!
NightCloud 2006-01-19
  • 打赏
  • 举报
回复
sysDate是oracle保留的关键字,会不会和这个有关系?
angle097113 2006-01-19
  • 打赏
  • 举报
回复
谢谢啊日,
我只怀疑,BDE里面连续插入两条以上的记录并且有一条日期类型字段为空,那么所有的日期字段都将为空。但是我没有把握肯定,所以希望大家测试一下。
netsys2 2006-01-19
  • 打赏
  • 举报
回复
要这样写SQL语句:

insert into test values('1',TO_DATE('20050119000000','YYYYMMDDHH24MISS'))
加载更多回复(1)

2,495

社区成员

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

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