关于TclientDataSet操作单层数据库,不能删除纪录的问题?(100分)

  • 主题发起人 zzdelphi
  • 开始时间
Z

zzdelphi

Unregistered / Unconfirmed
GUEST, unregistred user!
code:
for i:=0 to clientdataset1.fieldcount-1 do
begin
clientdataset1.delete;
end;
clientdataset1.applyupdata(0);
clientdataset1.savetofile;//运行到这里用clientdaaset1->datasource->dbgrid,显示
//字段为空,showmessage(inttostr(cleintdataset1.fieldcount))为0,但打开文件数据任在.
for i:=0 to 360 do
begin
clientdataset1.append(各字段值);
end;
clientdataset1.savetofile;

数据库文件刚创建使为2K,运行一次后为140K,之后每运行一次增加200多K
为什么删不了?

分不够还可在加,希望各位大虾帮忙看看
 
读一下n:=clientdataset1.applyupdata(0)的返回值是多少?,如果删除成功应返回0,如果
返回值大于0,说明有n条记录更新失败。


for i:=0 to clientdataset1.fieldcount-1 do
begin
clientdataset1.delete;
end;
到这里删除的是内存中的数据。
clientdataset1.applyupdata(0);
把上面语句改成
n:=clientdataset1.applyupdata(0);
n>0说明修改结果更新失败,n是更新失败的记录数。
 
如果更新不成功咋办?
 
for i:=0 to clientdataset1.fieldcount-1 do
begin
clientdataset1.delete;
end;

有多少字段删除多少条记录,然后你又增加360条,不知字段个数与360
有什么关系?问题出在这里吧。

 
to yh
不是字段数,而是纪录数
有多少纪录删除多少条记录
360是程序需要,没有关系
 
如果更新不成功的记录数和你删除的记录数一样说明
你的clientdataset1通过DataSetProvider1连接的数据源关系已经发生了变化
BDE无法把你的更新结果存到数据库中。
你把源码寄给我帮你看看。
 
to panyongze
n:=clientdataset1.applyupdata(0);
n=0
为什么?
 
如果n=0说明删除结果提交成功。
你用的数据库是不是DBF表,记录数不增加,文件大小增加是因为是伪删除。
在服务器段加上一段Pack的代码进行真正的删除。
 
告诉你解决这个问题的绝技:
ClientDataset1.MergeChangeLog;
 
多人接受答案了。
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
I
回复
0
查看
514
import
I
I
回复
0
查看
609
import
I
顶部