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

XML Load File 之後卻無法Append DataBase

尚未結案
night0806
一般會員


發表:1
回覆:2
積分:0
註冊:2004-01-19

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-01-30 04:03:19 IP:61.63.xxx.xxx 未訂閱
各位大大好 如標題所言"XML Load File 之後卻無法Append DataBase" 以下是小弟的動作 1. 我先將DataBase的Table匯出(使用TADODataSet元件 ADODataSet1)成一個xml file 2. 然後將資料庫清空 3. 然後使用另一個TADODataSet元件(使用TADODataSet元件 ADODataSet2)呼叫LoadFromFile來將同一個xml file讀進來 4. 之後我再呼叫UpdateBatch的Methord 5. 然後我檢查ADODataSet2發現筆數是正確的 6. 可是我去看DataBase時發現是空的 在我呼叫UpdateBatch後,我的RecordSet應該會更新到DataBase 請問大大,有哪位大大可以指點一下小弟的嗎??? p.s:小弟使用Delphi7,與DataBase連結均使用ADO p.s:小弟有去看之前一位大大(不好意思忘了名字)寫的BriefCaseDemo的程式 小弟發現大大的程式只會Update XML file中被標記為Update的element 小弟的現像是因為XML file的關係嗎??? 煩請諸位大大指點...指點... ---------------------------------------------- 諸人的眼中的我,就是我
terrychen
尊榮會員


發表:90
回覆:794
積分:501
註冊:2003-05-01

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-01-30 08:42:11 IP:61.221.xxx.xxx 未訂閱
您好: Call UpdateBatch to write any pending updates to disk for a dataset that is in batch update mode to the associated database ~~應無所住而生其心~~
night0806
一般會員


發表:1
回覆:2
積分:0
註冊:2004-01-19

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-01-30 11:23:32 IP:61.63.xxx.xxx 未訂閱
謝謝大大的指點 但是,我依照Delphi Help的寫法,還是不行 我列出一小段的程式碼,請大大指點一下    
  with ADODataSet2 do begin
     CursorLocation := clUseClient;
     CursorType := ctStatic;
     LockType := ltBatchOptimistic;
     CommandType := cmdText;
     CommandText := 'select pwd, user_id from users';
  Open;
  end;
  ADODataSet2.Edit;
  filename := 'users.xml';
  ADODataSet2.LoadFromFile(filename);
  ShowMessage(IntToStr (ADODataSet2.RecordCount) );
  ADODataSet2.UpdateBatch(arAll);      
小弟我這樣設有問題嗎??? ---------------------------------------------- 諸人的眼中的我,就是我
terrychen
尊榮會員


發表:90
回覆:794
積分:501
註冊:2003-05-01

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-01-30 11:38:28 IP:61.221.xxx.xxx 未訂閱
您好: UpdateBatch 是將有異動的資料更新至資料庫 而你LOADFROMFILE的資料雖已經載到ADODataSet2但對資料庫而言 這些資料並不是原來就存在的,所以不會存回去 要存回去你可以下APPEND指令新增至資料庫 ~~應無所住而生其心~~
night0806
一般會員


發表:1
回覆:2
積分:0
註冊:2004-01-19

發送簡訊給我
#5 引用回覆 回覆 發表時間:2004-01-30 11:55:15 IP:61.63.xxx.xxx 未訂閱
謝謝大大 但是,不知道為什麼 我將 ADODataSet2.UpdateBatch(arAll); 改成 ADODataSet2.Append; 但還是不行 ---------------------------------------------- 諸人的眼中的我,就是我
Rain
資深會員


發表:31
回覆:236
積分:268
註冊:2003-02-17

發送簡訊給我
#6 引用回覆 回覆 發表時間:2004-01-30 12:12:35 IP:220.160.xxx.xxx 未訂閱
參考一下 > 青青子衿、悠悠我心。 但為君故、沉吟至今!
terrychen
尊榮會員


發表:90
回覆:794
積分:501
註冊:2003-05-01

發送簡訊給我
#7 引用回覆 回覆 發表時間:2004-01-30 12:23:53 IP:61.221.xxx.xxx 未訂閱
您好: 小弟沒說清楚 是利用回圈將ADODataSet2的資料逐筆APPEND進資料庫 ~~應無所住而生其心~~
johnny2212
初階會員


發表:34
回覆:65
積分:39
註冊:2003-04-09

發送簡訊給我
#8 引用回覆 回覆 發表時間:2004-01-31 14:30:18 IP:61.226.xxx.xxx 未訂閱
當然是XML的關係,你所謂的”DataBase的Table匯出”使用的應該是ADOQuery1.SaveToFile(abc.XML,pfXML)吧,這個方法只是將資料轉成XML可讀取的格式,並非是將其匯出資料庫;並且此格式並非屬於XML Document,你可以讀取但不可以直接去修改它,故解決方法有二: 1 若你用原來的方法不作改變的話,那只有將資料修改完畢後,重新Save一次,將原有的檔案蓋掉,當然我並不建議用這個方法 2 使用XML Mapper(Delphi Tools可找到),將其匯出資料庫,匯出的過程是很複雜的,你必須透過多層次才可(若你不會Multi-Tier的話就沒法度了),共要匯出三個檔案:一個是XML Document,兩個是.xtr(XML和DataPacket的轉接檔案),若你做到此處的話就是轉出成功了(轉出資料庫的過程是麻煩的,不是直接SaveToFile這麼簡單就OK了),過程請自己測試o 接著使用 XMLTransformProvider1連接轉出的三個檔案(read是ToDP.xtr,write是ToXML.xtr),再用ClientDataSet1 連接XMLTransformProvider1,這樣的話你要怎麼修改都可以了(即使用ClientDataSet1.Open,ClientDataSet1.Edit, ClientDataSet1.ApplyUpdates(0),而不必使用LoadFromFile)
johnny2212
初階會員


發表:34
回覆:65
積分:39
註冊:2003-04-09

發送簡訊給我
#9 引用回覆 回覆 發表時間:2004-02-02 07:37:24 IP:61.226.xxx.xxx 未訂閱
對不起,我需要作以下更正 1.匯出不要用XML Mapper,直接用ClientDataSet1.SaveToFile(‘aa.xml’,dfXML) 因為用XML Mapper匯出(Remote Connect),中文會出現亂碼 2.再用XML Mapper製作出.xtr(再左邊Open之後 Rowà-->Select Child就可以了,不要Select all),其他和我上次回答的相同 3.因為我看不出你到底要求的功能是什麼, 必要時配合使用XMLTransformClient1,可以用GetDataAsXML將(DataPacket轉成XML)和ApplyUpdates(寫入資料庫) 4.我想有這兩的方法,應該問題都可以解決了(Delphi有附範例)
系統時間:2024-11-25 16:23:32
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!