delphi Ado(mdb)更新记录
问题描述:
我试图复制一个主表和另外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
感谢
答
的字段都将在同一时间进行更新。实际更新是在您发帖时完成的(或者甚至没有,这取决于批量更新是打开还是关闭)。
但请重新考虑你的逻辑。这将是更为有效的使用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中的指示可以是设计缺陷的征兆。但是我不能确切地说不知道更多。无论如何,数据重复永远不会好。
答
我相信,提问者想对数据的完整性,这意味着,确保只有所有的表都将更新或无...
我知道要实现这一点与安全执行所有这些更新(方式或插入,aso)在转换中使用SQL命令。
目前还不清楚你想要什么。尝试显示从数据到数据的传播。 – BennyBechDk 2010-04-16 07:39:20
最有效的方法之一就是直接从使用INSERT INTO SELECT语句的select中插入。从另一个更新表格的速度更快。 – yozey 2010-06-05 12:31:44