XML Load File 之後卻無法Append DataBase |
尚未結案
|
night0806
一般會員 發表:1 回覆:2 積分:0 註冊:2004-01-19 發送簡訊給我 |
各位大大好 如標題所言"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 發送簡訊給我 |
|
night0806
一般會員 發表:1 回覆:2 積分:0 註冊:2004-01-19 發送簡訊給我 |
謝謝大大的指點
但是,我依照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 發送簡訊給我 |
|
night0806
一般會員 發表:1 回覆:2 積分:0 註冊:2004-01-19 發送簡訊給我 |
|
Rain
資深會員 發表:31 回覆:236 積分:268 註冊:2003-02-17 發送簡訊給我 |
|
terrychen
尊榮會員 發表:90 回覆:794 積分:501 註冊:2003-05-01 發送簡訊給我 |
|
johnny2212
初階會員 發表:34 回覆:65 積分:39 註冊:2003-04-09 發送簡訊給我 |
當然是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 發送簡訊給我 |
對不起,我需要作以下更正
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有附範例)
|
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |