全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:2493
推到 Plurk!
推到 Facebook!

如何ADO上使用類似batchmove的功能

答題得分者是:Mickey
Sanyuan
一般會員


發表:24
回覆:32
積分:11
註冊:2002-06-23

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-02-12 09:36:09 IP:211.75.xxx.xxx 未訂閱
小弟需要將oracle上table的資料轉至local 的 *.mdb檔案 *.mdb檔已有資料,只是insert而已 查了之前的文章,也沒有發現相關的文件 各位前輩都是如何解決呢?請各位給個方向.
Mickey
版主


發表:77
回覆:1882
積分:1390
註冊:2002-12-11

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-02-12 10:39:42 IP:61.219.xxx.xxx 未訂閱
引言: 小弟需要將oracle上table的資料轉至local 的 *.mdb檔案 *.mdb檔已有資料,只是insert而已 查了之前的文章,也沒有發現相關的文件 各位前輩都是如何解決呢?請各位給個方向.
這個工具不知合不合用 http://delphi.ktop.com.tw/topic.php?TOPIC_ID=23790 /* 使用中文很辛苦,中華男兒當自強 */
chih
版主


發表:48
回覆:1186
積分:639
註冊:2002-04-02

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-02-12 13:10:23 IP:211.74.xxx.xxx 未訂閱
可以用二個Query來轉資料...自己寫轉檔程式...也很簡單...
引言: 小弟需要將oracle上table的資料轉至local 的 *.mdb檔案 *.mdb檔已有資料,只是insert而已 查了之前的文章,也沒有發現相關的文件 各位前輩都是如何解決呢?請各位給個方向.
Sanyuan
一般會員


發表:24
回覆:32
積分:11
註冊:2002-06-23

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-02-12 15:25:01 IP:211.75.xxx.xxx 未訂閱
謝謝兩位的建議 不過小弟需要將功能寫在程式中 而不是tool的使用 所也就想說使用兩的adoquery來解決 but 因為table的名稱要動態給 所以就寫了個副程式 寫到一半,無法解決...請各位幫方看一下 如下 procedure TMainFrm.BitBtn1Click(Sender: TObject); begin DataDump('PPP_Table'); // 可指定table的名稱 end; procedure DataDump(TableName:String); begin MainFrm.ClientQ.Close; //先刪除client端 ACCESS table內的資料, MainFrm.ClientQ.SQL.Clear; MainFrm.ClientQ.SQL.Add('DELETE FROM ' TableName); try MainFrm.ClientQ.ExecSQL; except showmessage('刪除資料表時發生錯誤'); abort(); end; MainFrm.ServerQ.Close; //用ADOQuery 取得Server端資料(Oracle) MainFrm.ServerQ.SQL.Clear; MainFrm.ServerQ.SQL.Add('SELECT * FROM ' TableName); MariFrm.ServerQ.Open; 然後呢.... 如何使用ClientQ將ServerQ裡的資料Insert到Client的Access 同名的Table上呢? end;
chih
版主


發表:48
回覆:1186
積分:639
註冊:2002-04-02

發送簡訊給我
#5 引用回覆 回覆 發表時間:2003-02-12 16:41:29 IP:211.74.xxx.xxx 未訂閱
改成這樣試看看.... procedure TMainFrm.BitBtn1Click(Sender: TObject); begin DataDump('PPP_Table'); // 可指定table的名稱 end; procedure DataDump(TableName:String); begin MainFrm.ClientQ.Close; //先刪除client端 ACCESS table內的資料, MainFrm.ClientQ.SQL.Clear; MainFrm.ClientQ.SQL.Add('DELETE FROM ' #39 TableName #39); try MainFrm.ClientQ.ExecSQL; except showmessage('刪除資料表時發生錯誤'); abort(); end; MainFrm.ServerQ.Close; //用ADOQuery 取得Server端資料(Oracle) MainFrm.ServerQ.SQL.Clear; MainFrm.ServerQ.SQL.Add('SELECT * FROM ' #39 TableName #39); MariFrm.ServerQ.Open; MariFrm.ServerQ.First; While not MariFrm.ServerQ.eof do begin MainFrm.ClientQ.Close; MainFrm.ClientQ.SQL.Clear; MainFrm.ClientQ.SQL.ADD(' INSERT INTO ' #39 TableName #39 '(A1, A2) ' ' values ' '(' #39 MariFrm.ServerQ.FieldByName('A1').Value #39 ',' #39 MariFrm.ServerQ.FieldByName('A2').Value #39 ')'); MainFrm.ClientQ.ExecSQL; MariFrm.ServerQ.Next; end; end; TRY TRY SEE..
Mickey
版主


發表:77
回覆:1882
積分:1390
註冊:2002-12-11

發送簡訊給我
#6 引用回覆 回覆 發表時間:2003-02-12 17:05:21 IP:61.219.xxx.xxx 未訂閱
procedure TMainFrm.DoInsert;
var
    i:integer;
    fn:string;
begin
     ClientQ.Close;
     ClientQ.SQL.Clear;
     ClientQ.SQL.Add('SELECT * FROM ' TableName);
     ClientQ.ReqestLive := True;
     ClientQ.Open;
     ServerQ.First;
     with ServerQ do begin
        while not Eof do begin
           try
              ClientQ.Append;
              for i:=0 to fieldcount-1 do begin
                fn:=fields[i].FieldName;
                if (ClientQ.findfield(fn)<>nil) then
                   ClientQ.fieldbyname(fn).Value:=fields[i].Value;
              end;
              ClientQ.Post;
           except 
              if ClientQ.State in [dsEdit,dsInsert] then ClientQ.cancel;
           end;
           next;
        end;
     end;
end;
/* 使用中文很辛苦,中華男兒當自強 */
Sanyuan
一般會員


發表:24
回覆:32
積分:11
註冊:2002-06-23

發送簡訊給我
#7 引用回覆 回覆 發表時間:2003-02-13 14:42:25 IP:211.75.xxx.xxx 未訂閱
參考兩位的程式碼 已解決了 Mickey兄的部分較符合小弟的需求 不過還是非常感謝兩位!!!
jthwang
一般會員


發表:1
回覆:21
積分:4
註冊:2002-07-31

發送簡訊給我
#8 引用回覆 回覆 發表時間:2006-12-20 02:08:02 IP:210.243.xxx.xxx 未訂閱
HI   Mickey
很好的範例,程式很漂亮.

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