2010-04-15 82 views
0

我試圖複製一個主表和另外2個子表中的數據。當我在主表中選擇一條記錄時,我將從該表中複製另一個表中的所有字段。 (從表1 ADOQuery複製選定記錄)delphi Ado(mdb)更新記錄

procedure TForm1.copyButton7Click(Sender: TObject); 
SQL.Clear; 
SQL.Add('SELECT * from ADoquery'); 
SQL.Add('Where numeracao LIKE ''%'+NInterv.text);// locate record selected in Table1 NInterv.text) 
Open; 

// iniciate copy of record´s 

begin 
    while not tableADoquery.Eof do 

     begin 
     Table1.Last; 
     Table1.Append;// how to append if necessary!!!!!!!!!! 
     Table1.Edit; 
     Table1.FieldByName('C').Value := ADoquery.FieldByName('C').Value; 
     Table1.FieldByName('client').Value := ADoquery.FieldByName('client').Value; 
     Table1.FieldByName('Cnpj_cpf').Value := ADoquery.FieldByName('Cnpj_cpf').Value; 
     table1.Post; 
     table2.next;/// 
     end; 
end; 

//我怎麼能在同一時間更新TableChield,TableChield1從TableChield_1和TableChield_2領域?

做同樣的子表 TableChield < = TableChield_1
TableChield1 < = TableChield_2

感謝

+0

目前還不清楚你想要什麼。嘗試顯示從數據到數據的傳播。 – BennyBechDk 2010-04-16 07:39:20

+0

最有效的方法之一就是直接從使用INSERT INTO SELECT語句的select中插入。從另一個更新表格的速度更快。 – yozey 2010-06-05 12:31:44

回答

1

的字段都將在同一時間進行更新。實際更新是在您發帖時完成的(或者甚至沒有,這取決於批量更新是打開還是關閉)。

但請重新考慮你的邏輯。這將是更爲有效的使用SQL語句(INSERT),以將數據插入到其他表

SQL.Clear; 
SQL.Add('INSERT INOT TABLE_1(C, client, Cnpj_cpf)'); 
SQL.Add('VALUES(:C, :client, :Cnpj_cpf)'); 

然後只需填寫一個循環的值。

SQL.Parameters.ParamByName('C').Value := ADoquery.FieldByName('C').Value; 
SQL.Parameters.ParamByName('client').Value := ADoquery.FieldByName('client').Value; 
SQL.Parameters.ParamByName('Cnpj_cpf').Value := ADoquery.FieldByName('Cnpj_cpf').Value; 
SQL.ExecSQL; 

你也可以做Updade - 插入模式如果數據可以alredy在目標表中。

這樣的:

if SQL.ExecSQL = 0 then 
begin 
    // no records were update, do an insert 
end; 

而且還關係到你從表1中的數據複製到表2中的指示可以是設計缺陷的徵兆。但是我不能確切地說不知道更多。無論如何,數據重複永遠不會好。

0

我相信,提問者想對數據的完整性,這意味着,確保只有所有的表都將更新或無...

我知道要實現這一點與安全執行所有這些更新(方式或插入,aso)在轉換中使用SQL命令。