PB6.5中DataWindow为何不能更新?(100分)

  • 主题发起人 主题发起人 geshengping
  • 开始时间 开始时间
G

geshengping

Unregistered / Unconfirmed
GUEST, unregistred user!
在用Pb6.5连接Oracl8.0.5数据库,使用的PB Native driver 是 Oracle8.
程序中使用DataWindow更新数据时报以下错误:"Rows changed between
retrieve and update", 甚至在数据库画板中直接打开表更新都不能成功。
如果表中所有的Char 型字段值在插入时都填满所定义的长度,或将char 型
改用varchar2型就能够正常更新。
恳请高手指点原因.
 
问错地方了,去www.sybase.com.cn问问。
 
但我知道这里的高手比较多,还请多多包涵。由于很着急,所以请各位高手能拔刀相助。
 
估计驱动程序不匹配.

(我瞎猜的)
 
pb6.5+oracle8.05 和我用的环境一样
"Rows changed between retrieve and update"
是说数据窗口更新时的更新条件有点问题。
打开数据窗口,选择rows、update properties菜单
有组where clause for update/delete的选项。
key columns //根据主键列
key and updateable columns//根据主键列和可以更新的列
key and modified columns //根据主键列和所有修改的列
改动这后就是改动数据窗口的更新语句 update tablename set colname=value
where //就是改动where后的条件了。
where 主键列1='xxx'.....
或where 主键列1='xxx' and 可更新列1='xxxx'...
或where 主键列1='xxx' and 修改列1='xxx'....
如果出现上面的问题的话建议你改变where clause for update/delete的选项。
另外数据库主键定义对数据窗口的定义也有影响的。
(想当初我用PB时,根本就不管什么数据库完整性。PB提示那列有问题就把那列改为非唯一
,反正用户能正常使用就成了)。


 
honghs:
您连接Oracle8.05时所用的NativeDriver是Oracle 7.x还是Oracle 8.0?即在
PB中创建db profile对话框时选的是哪一种?我所遇到的问题和geshengping的一样
Oracle 8.0的PB Native Driver好象有问题,不管Update Property 怎么改,数据
窗口如果更新某一条记录时,如果该记录中char类型的列是关键字的一部分,且更新
前的值没有按它定义的长度填满,更新该行记录的任意一个字段都不能成功!
如:
create table aaa( col1 char(10) not null, col2 char(10) not null,
primary key col1);
insert into aaa( "111", "2222"); //col1 未填满10字符并且是关键字
基于aaa表的数据窗口就是不能更新。
 
to uandme
:NativeDriver选用or8 oracle8.0,不要用oracle8自带的odbc驱动程序。
pb6自带的NativeDriver连ORACLE8时有问题,pb6.5提供的NativeDriver可
以正确连接oracle8的。你安装PB时要选择自定义安装,缺省是不安装ORACLE8的驱
动程序的。
to geshengping
:你是不是用oracle8自带的odbc驱动程序连接的。oracle8的ODBC驱动程序在PB中
有点问题。

1、看一下是不是驱动程序的问题。
2、数据窗口不能更新可能是数据库没有建立主键或索引而引起的。
3、可以打开数据窗口,重新选择一下数据窗口的字段(先把所有字段去掉,再选回来)。


(两位有空到http://programs.yesite.com/ 的pb站点看看,我都不大好意思在
一个delphi站点回答PB的问题了。)
 
我发现秘密了!
 
该结束就结束,免的我动手,呵呵……
看到PB,张口想讲X,算了,我自己也经常……
 
多人接受答案了。
 
后退
顶部