三层中ClientDataSet的打开与关闭问题(100分)

小天

Unregistered / Unconfirmed
GUEST, unregistred user!
我程序中的ClientDataSet需要多次打开,
第一次SocketConnect:=true时,ClientDataSet OPEN正常。
但我就不知道ClientDataSet何时需要Close呢?
因为我想在程序中按动一个按钮后继续OPEN这个ClientDataSet,但却出错了,
请问这是什么原因呢?
 
if not ClientDataSet.Active then
ClientDataSet.open
 
按动一个按钮后继续OPEN这个ClientDataSet?什么意思?
  你要刷新吗?可以用refreash
 
是要把本地的数据库内容追加到服务器上。
是追加,不是更新,所以不能用applyupdates或refresh
 
呵呵, 追加也是applyupdates:)
 
agree cytown.
你也可以把你的
ClientDataSet.Close;
Clientdataset.open;
写点SQL什么的:)
 
CJ,不行呀,第二次OPEN就会出错,呜~~~~~~~~~
 
what's the err msg?
 
Access violation at address 0070d872 in module 'XXXX.EXE'.
Read of address FFFFFFFF.
呜~~~~~~~~~~~~~~~
 
这个错误就是你访问了一个还未建立的类或者指针(读nill地址的数据)
 
不会吧?跟踪一下,到底哪条指令出问题?
 
你不会是用了书签吧!
 
你在IDE环境中先让ClientDataSet.Active为True,看看有没有问题,如果没有,
则在clientdataset.Open之前先close一下,好象它是不能在已经Open的情况
下再Open的,同样,设置Param等等都需要在Clientdataset Close的情况
下进行。如果在IDE时就有问题,那么查查你的服务端的SQL或Table有没有问题,
另外Delphi5和delphi4在Provider方面存在严重的不兼容,我们这里花了18800
买了Delphi5,结果发现控件栏已经没有provider了!很惨。你看看是不是以上的
情况。如果你的Clientdataset是动态生成的,那么单步调试一下,看看是否
还是NIl状态就open了。
 
多人接受答案了。
 
顶部