線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:1306
推到 Plurk!
推到 Facebook!

关于2个cds数据文件关于内容覆盖的问题

缺席
zhouying82
高階會員


發表:150
回覆:272
積分:189
註冊:2004-03-16

發送簡訊給我
#1 引用回覆 回覆 發表時間:2014-11-19 17:18:45 IP:221.227.xxx.xxx 訂閱
有2个cds的数据文件A,B,想要实现的功能如下,先下载B,之后拿B里面的条目和A里面的条目想比较(根据文件名来),如果相同,则B覆盖掉A上面相同内容。有知道的不,急啊。
下面的代码总是死机。不知道是那个循环方面的问题,大大们能指点下么?

[code delphi]
假设B为clientdataset2,A为clientdataset1。我写了如下代码,但是总是报错,说clientdataset1.没有在edit模式里面
while not Form1.ClientDataSet2.eof do
begin
ClientDataSet1.Edit ;
ClientDataSet2.Edit ;
Form1.ClientDataSet2.first;

while not Form1.ClientDataSet1.eof do
begin
if Form1.ClientDataSet1.fieldbyname('名称').asstring=ClientDataSet2.fieldbyname('名称').asstring then
begin
clientdataset1.append;
end;
clientdataset1.Post;
end;
end;
Form1.ClientDataSet1.next;
ClientDataSet1.Close ;
ClientDataSet1.LoadFromFile('c:\text1.cds');
[/code]

------
断断续续的学了几年,还是一个初学者,永远支持Delphi !
GrandRURU
站務副站長


發表:235
回覆:1655
積分:1753
註冊:2005-06-21

發送簡訊給我
#2 引用回覆 回覆 發表時間:2014-11-20 09:18:28 IP:59.120.xxx.xxx 未訂閱
何不使用 Locate 查詢呢?
zhouying82
高階會員


發表:150
回覆:272
積分:189
註冊:2004-03-16

發送簡訊給我
#3 引用回覆 回覆 發表時間:2014-11-20 11:39:24 IP:117.86.xxx.xxx 訂閱
我把当中那句替换了,变成

[code delphi]
if Form1.ClientDataSet1.locate('名称'),clientdataset1.fieldbyname('名称').asstring,[]) then
[/code]

------
断断续续的学了几年,还是一个初学者,永远支持Delphi !
GrandRURU
站務副站長


發表:235
回覆:1655
積分:1753
註冊:2005-06-21

發送簡訊給我
#4 引用回覆 回覆 發表時間:2014-11-20 12:01:21 IP:59.120.xxx.xxx 未訂閱
Form1.ClientDataSet1

ClientDataSet1
是同一個物件?
P.D.
版主


發表:571
回覆:3888
積分:3677
註冊:2006-10-31

發送簡訊給我
#5 引用回覆 回覆 發表時間:2014-11-21 00:10:15 IP:118.169.xxx.xxx 未訂閱
這段CODE有很嚴重的LOOP問題

最上面

WHILE NOT FORM1.CLIENTDATASET1.EOF ...

但內層卻有 CLIENTDATASET1.APPEND

這已違反資料庫移動的準則, 當你在 CLIENTDATASET1 已進入記錄移動LOOP, 你卻下APPEND 導致整個記錄位置都錯譜了, 那怎麼會不死機呢?

我沒有仔細研究你整個CODE, 我懷疑是否應該如下

WHILE NOT FORM1.CLIENTDATASET2.EOF
系統時間:2017-12-15 4:50:59
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!