想做一個資料a傳入到資料b裡?? |
尚未結案
|
paa
初階會員 發表:50 回覆:101 積分:30 註冊:2005-02-01 發送簡訊給我 |
希望用for回圈把資料表a裡的全部都複製到資料表b裡
var
a1,a2,a3,s:string;
my: array [0..2] of string;
row,j,i:integer;
begin
row:=adoquery1.FieldCount; //欄位
j:=adoquery1.RecordCount; //筆數
ADOQuery1.First;
for i:=0 to j-1 do begin
a1:=adoquery1.FieldByName('department').AsString;
a2:=adoquery1.FieldByName('code').AsString;
a3:=adoquery1.FieldByName('name').AsString;
adoquery1.Next;
my[0]:=a1;
my[1]:=a2;
my[2]:=a3;
for w:=0 to row-1 do begin
adoquery1.Close;
adoquery1.SQL.Clear;
adoquery1.SQL.Add('INSERT INTO test([department],[code],[name]) values');
adoquery1.ExecSQL;
// edi[i][w].Text:=my[w];
end;
end;
end;
|
deity
尊榮會員 發表:90 回覆:876 積分:678 註冊:2003-05-09 發送簡訊給我 |
paa您好:
把資料表a裡的全部都複製到資料表b裡?
不用for回圈都行,有更直接更快捷的方法,有For如您下面做法,有点画蛇添足!
因不知您的资料库类型是什么的?
如是Access,可参考:http://delphi.ktop.com.tw/topic.php?topic_id=74130
假如有个Table1.mdb里面有两个表结构相同的数据表Table1、Table2;其中Table1有资料,Table2为空,想将Table1的某个栏位复制至Table2相应的栏位中。是这个意思吗,没理解错的话请参考: procedure TForm1.Button1Click(Sender: TObject); begin ADOQuery1.ConnectionString:='Provider=Microsoft.Jet.OLEDB.4.0;Data Source=F:\table\table1.mdb;Persist Security Info=False'; ADOQuery1.SQL.Add('insert into table2 select Field1 from table1 in "F:\table\table1.mdb"'); //其中Field1为复制的字段 ADOQuery1.ExecSQL; end; 如果是对应于两个不同的Access数据库db1.mdb,Table1.mdb,想将Table1.mdb中的Table1表的某个字段复制至db1.mdb中的Table1相应字段中,略微修改即可,如下: procedure TForm1.Button1Click(Sender: TObject); begin ADOQuery1.ConnectionString:='Provider=Microsoft.Jet.OLEDB.4.0;Data Source=F:\table\db1.mdb;Persist Security Info=False'; ADOQuery1.SQL.Add('insert into table1 select Field1 from table1 in "F:\table\table1.mdb"');//其中Field1为复制的字段 ADOQuery1.ExecSQL; end;如是MS SQL的话,可参考: http://delphi.ktop.com.tw/topic.php?topic_id=72579 方法都好过您上面所PS的做法。 或直接写也行: ADOQuery1.Open; ADOQuery1.First; ADOQuery2.Close; adoquery2.SQL.Clear; adoquery2.SQL.Add('select * from b'); adoquery2.open; while not ADOQuery1.Eof do Begin adoquery2.Edit; adoquery2.Append; adoquery2.FieldByName('department').AsString:=adoquery1.FieldByName('code').AsString; adoquery2.FieldByName('name').AsString:=adoquery1.FieldByName('department').AsString; adoquery2.FieldByName('code').AsString:=adoquery1.FieldByName('name').AsString; adoquery2.Post; end;大概写了没试过,主要还是采用上面提供的方法为主,供您参考 <> ============================ 为什么经过多年以后,得失的过程如此冷漠 ============================ > 發表人 - |
paa
初階會員 發表:50 回覆:101 積分:30 註冊:2005-02-01 發送簡訊給我 |
你好: 不好意思,我是用access的,因為我主要的目的是想要把資料表a裡的粢料全加密,傳到資料表b裡,所以才想說用for,不好意思,問題沒說清楚?
var
a1,a2,a3,s:string;
tmp_buf1,tmp_buf2,tmp_buf3 : String;
my: array [0..2] of string;
row,j,i,w:integer;
begin
row:=adoquery1.FieldCount; //欄位
j:=adoquery1.RecordCount; //筆數
ADOQuery1.First;
for i:=0 to j-1 do begin
EnCryptStr(ADOQuery1['department'],tmp_buf1,'123');
EnCryptStr(ADOQuery1['code'],tmp_buf2,'123');
EnCryptStr(ADOQuery1['name'],tmp_buf3,'123');
a1:=tmp_buf1;
a2:=tmp_buf2;
a3:=tmp_buf3;
//adoquery1.Next;
//my[0]:=a1;
//my[1]:=a2;
// my[2]:=a3;
// for w:=0 to row-1 do begin
adoquery1.Close;
adoquery1.SQL.Clear;
adoquery1.SQL.Add('INSERT INTO test([department],[code],[name]) values (a1,a2,a3)');
adoquery1.ExecSQL;
// edi[i][w].Text:=my[w];
// end;
end;
end;
|
deity
尊榮會員 發表:90 回覆:876 積分:678 註冊:2003-05-09 發送簡訊給我 |
那您有无试试我上在写的代码呢,略作应该就可以
var tmp_buf1,tmp_buf2,tmp_buf3 : String; ADOQuery1.Open; ADOQuery1.First; ADOQuery2.Close; adoquery2.SQL.Clear; adoquery2.SQL.Add('select * from b'); adoquery2.open; while not ADOQuery1.Eof do //和您这句for i:=0 to j-1 do begin作用一样 Begin //其实不用得出其栏位,只要笔数即可 EnCryptStr(adoquery1.FieldByName('code').AsString,tmp_buf1,'123'); EnCryptStr(adoquery1.FieldByName('department').AsString,tmp_buf2,'123'); EnCryptStr(adoquery1.FieldByName('name').AsString,tmp_buf3,'123'); adoquery2.Edit; adoquery2.Append; adoquery2.FieldByName('department').AsString:=tmp_buf1; adoquery2.FieldByName('name').AsString:=tmp_buf2; adoquery2.FieldByName('code').AsString:=tmp_buf3; adoquery2.Post; adoquery1.next; end;改为如上,应该没问题,您试试< >已下班,有问题的话,只好明天解决< > ============================ 为什么经过多年以后,得失的过程如此冷漠 ============================ |
paa
初階會員 發表:50 回覆:101 積分:30 註冊:2005-02-01 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |