如何ADO上使用類似batchmove的功能 |
答題得分者是:Mickey
|
Sanyuan
一般會員 發表:24 回覆:32 積分:11 註冊:2002-06-23 發送簡訊給我 |
|
Mickey
版主 發表:77 回覆:1882 積分:1390 註冊:2002-12-11 發送簡訊給我 |
|
chih
版主 發表:48 回覆:1186 積分:639 註冊:2002-04-02 發送簡訊給我 |
|
Sanyuan
一般會員 發表:24 回覆:32 積分:11 註冊:2002-06-23 發送簡訊給我 |
謝謝兩位的建議
不過小弟需要將功能寫在程式中
而不是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 發送簡訊給我 |
改成這樣試看看....
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 發送簡訊給我 |
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 發送簡訊給我 |
|
jthwang
一般會員 發表:1 回覆:21 積分:4 註冊:2002-07-31 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |