使用Query修改Oracle数据库的问题?(难度值高)(70分)

  • 主题发起人 主题发起人 lee3star
  • 开始时间 开始时间
delphi和oracle都在同一机子上吗?若是很可能有问题
 
呵呵, 用odbc98试试, 看行不行:-)
 
modbc也可一试
 
把REQUESTLIVE属性改为FALSE,程序当然能跑,
但是,不能直接修改了。
这个问题就是大小写和*的问题
 
如果你想使用query控件完成数据的增、删、改功能,
不要把REQUESTLIVE属性改为TRUE,
使用UpdataSql控件,在query控件中指定UpdataObject属性,
并把CachedUpdatas属性改为TRUE.
还要在UpdataSql中设置deletesql、insertsql、 modifysql值
为了灵活我一直使用query控件,关于如何保存略。
 
我也能遇到同样问题。问题如下:
我在BDE中设置了如下别名oxmst,该别名能正确连到oracle
现我用Query去访问oracle中一个表MST02,
Query1.Sql.Clear;
Query1.Sql.Add('Select * from Mst02')
Query1.Open

我可以看到返回结果(我将返回结果显示到DBGrid1中),但是DbGrid1不能编辑,而DbGrid1的ReadOnly属性是false.另外我采用如下办法修改数据,
query1.edit
query1.fields[1].value='test'
query1.post
程序报'数据集为只读的错误'
 
select * from 用户名.bus不一定行
我在ORACLE8
select * from BUS(表名大写)可以修改
select * from 用户名.bus不行
 
将表名换成大写就OK.
 
没有对表进行操作的权限
 
hl-zhw:我也是。
 
这个问题肯定是因为大小写,我也遇到过类似的问题(我是Delphi4 + Oracle8)。
至于RequestLive=true时为什么需要sql大写,我也搞不清楚,
可能是bug,因为并无此必要。
另外lee3star你也应该把你的sql换成大写试一试看到底行不行?如果可以
的话就不用再浪费大家的时间了。
 
把SQL语句中的表名用大写
 
多人接受答案了。
 
后退
顶部