2010-04-15 4 views
0

하나의 마스터 테이블과 2 개의 추가 자식 테이블에서 데이터를 복사하려고합니다. 마스터 테이블에서 하나의 레코드를 선택하면 해당 테이블의 모든 필드가 다른 테이블에 복사됩니다. (ADOQuery에서 표 사본 선택한 레코드)델파이 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_1 및 TableChield_2 필드에서 TableChield, TableChield1를 업데이트 할 수 있습니다?

자식 테이블에 대한 TableChield < = TableChield_1
TableChield1 < = TableChield_2

감사

+0

원하는 것이 분명하지 않습니다. expexed from 및 to 데이터를 보여줍니다. – BennyBechDk

+0

가장 효율적인 방법 중 하나는 INSERT INTO SELECT 문을 사용하여 select에서 직접 삽입하는 것입니다. 다른 테이블에서 테이블을 업데이트하는 훨씬 빠른 방법. – yozey

답변

1

필드가 모두 동시에 업데이트됩니다 동일한 작업을 수행. 실제 업데이트는 게시를 호출 할 때 수행됩니다 (또는 일괄 업데이트가 켜져 있는지 여부에 따라 다름).

하지만 논리를 재고하십시오. 그럼 그냥 루프에서 값을 채우는 다른 테이블

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

에 데이터를 삽입하기 위해 SQL 문 (INSERT)를 사용하는 것이 훨씬 더 효율적이 될 것입니다.

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 - Insert 패턴을 사용할 수도 있습니다. 이처럼

:

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

그리고 또한 표 2, 표 1에서 데이터를 복사하는 표시가 설계 결함의 표시 될 수 있습니다. 그러나 나는 더 많이 알지 못해도 그것을 확실히 말할 수는 없다. 어쨌든 데이터 복제는 결코 좋지 않습니다.

0

나는 ... 아스 커는 모든 테이블이 업데이트 된 것을 보장하거나 것도 의미 데이터 무결성에 대해 생각했다

나는 보안이가 (이 업데이트를 실행하고 달성하기 위해 알고있는 방법을 생각 또는 삽입, aso) 전환 내에서 SQL 명령을 사용합니다.

관련 문제