mdb的資料表全部nsert 到mysql內 該如何實作? |
尚未結案
|
hatakeshi
一般會員 發表:3 回覆:0 積分:0 註冊:2004-11-09 發送簡訊給我 |
|
cancer
高階會員 發表:58 回覆:319 積分:190 註冊:2004-07-31 發送簡訊給我 |
很好奇,既然有 DataSet 可以用,為什麼複製資料還要用 Sql 指令來 Insert 資料?
用兩個 Dataet,由其中一邊複製到另一邊,不就好了嗎? 用 Sql 指令 Insert,只要遇到文字內容有單引號,就掛,因此,必須把每個欄位裡面的單引號變成兩個單引號,很麻煩。又如果,資料表有三百個欄位,Sql 指今不就寫到手軟? 再說,如果以後有新增欄位、修改欄位名稱,程式都要拿出來改。 用兩個 DataSet 單向複製,兩邊資料表裡面的欄位,都用相同的名稱,就只需要 var FieldName : string; ..... // ToDS.LockType := ltBatchOptimistic; // 能用批次更新是最好的,失敗才能全部重來,不然複製一半掛掉就麻煩了 ... FromDS.First; while not FromDS.EOF do begin ToDS.Append; for i := 0 to ToDS.FieldCount -1 do begin if ToDS.Fields[i].DataType = ftAutoInc then Continue; // 略過自動增號欄位 FieldName := ToDS.Fields[i].FieldName; // 欄位名稱雖相同,但索引本必相同(不要用 FromDS 的欄位名稱) // if FromDS.FieldList.IndexOf(FieldName) >= 0 then // 能判斷最好 ToDS.Fields[i].Value := FromDS.FieldByName(FieldName).Value; end; ToDS.Post; //------------- FromDS.Next; end; FromDS.First; // ToDS.UpdateBatch(arAll); // 全部 Ok 才回存 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |