2010-04-15 80 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命令。