sqlserver2000和ADO的兼容性问题(100分)

  • 主题发起人 主题发起人 LZB_TT
  • 开始时间 开始时间
L

LZB_TT

Unregistered / Unconfirmed
GUEST, unregistred user!
SQLSERVER2000和ADO的问题!EOF或BOF中有一个为“真”,或者当前的记录已被删除,所需的
操作需要一个当前的记录![code[:)]][/code]
 
Delphi 5 ADO著名的bug,打补丁吧
 
Delphi 5 Update2
 
补丁要及时打[8D]
 
delphi6已解决,或delphi5打补丁
 
补丁打了,在SQLSERVER7。0中没有这个问题。只有SQLSERVER2000中有这个问题!!!
 
delphi5打补丁,2个,一个update1,一个adoupdate.
或者ADO驱动降到2.1,delphi5安装碟有,mdac_typ.exe.
 
以上都不正确有没有C/S的高手来指点一二!!100分呀!!
 
没办法,只好出绝招了(星爷):更新纪录后再close and open dataset 一次。
我碰到过这种事,后来不知怎么搞的就好了,还以为是升级包的功劳。

或者把dataset的一属性变为wherekeyonly,默认是moMarshalAll,参考李维的书。
bde直接设就行了,ado 要open后才可。跟踪产升的sql语句就知道区别了。

代吗:

procedure Set_UpdateCriteria(Dset: TADOQuery);
const
adCriteriaKey =$00000000;
var
pty:property_;
pties:Properties;
begin
with Dset do
begin
if Active=False then Active:=True;
pties:=Recordset.Properties;
pty:=pties.Get_Item('Update Criteria');
pty.Value:=adCriteriaKey;
end;
end;

adoquery ( or adodataset) 激活后再 Set_UpdateCriteria(aodquery)一下。
当然你sql2000中的table要有主健。




 
我以前也遇到个这样的问题,但我用了两天的时间才找到解决的方法,不过解决之后
代码量可能要增加一点啊:
方法是这样的:当你碰到一个数据表为空时就会出现上面的情况
if 表为空 then
adoconnection.connected:=false;
 
不要随便安装sql2000,还是用sql7.0算了, 否则想恢复都难了
 
可能是sql2000和delphi的问题吧.


 
我用的是Delphi6,没有这个问题呀
 
把LockType设为ReadOnly就可以了,当然你不能对诸如DBGrid等进行直接更新数据了。
而只能通过SQL语句!
 
接受答案了.
 
后退
顶部