Vediamo se ho capito bene:
Tu hai 2 tabelle e devi copiare la tabella1 nella tabella2, ma non conosci a priori se i campi destinazione (tabella2) hanno stesso nome e tipo dei campi presenti nella tabella sorgente (Tabella1).
Secondo me non ti basta cercare se il nome del campo esiste nella tabella destinazione, ma devi cercare anche il tipo (intero, stringa, numerico ecc..ecc), il giochino diventa un po' più complicato, ma non impossibile devi solo trovare il tipo di conversione adatta dal campo sorgente al campo destinazione, qualcosa del tipo:
for x := 0 to Tabella1.FieldCount - 1 do // per tutti i campi della tabella sorgente
begin
oField := Tabella1.Fields[x]; // solo per appoggio
oFieldDest := Tabella2.FindField(oField.FieldName);
if Assigned(oFieldDest) then // trovato il field in destinazine
begin
case oFieldDest.DataType of // vediamo il tipo del campo destinazione
ftInteger, ftAutoInc, ftSmallint, ftShortint,ftLargeint, ftBytes:
begin
// devo testare se sono uguali altrimenti converto
if oField.DataType in [ftInteger, ftAutoInc, ftSmallint, ftShortint,ftLargeint, ftBytes] then
oFieldDest.AsInteger := oField.AsInteger
else if oField.DataType in [ftString, ftWideString, ftMemo, ftWideMemo] then
// attenzione possibile perdita di informazioni prendere provvedimenti
oFieldDest.AsInteger := StrToIntDef(oField.AsString, 0)
else if oField.DataType in [ftSingle, ftFloat, ftCurrency, ftFMTBcd] then
// attenzione possibile perdita di informazioni prendere provvedimenti
oFieldDest.AsInteger := Round(oField.AsFloat)
else
begin
// Campo sorgente non copiabile in destinazione
oFieldDest.AsInteger := 0;
end;
end;
// qui devo testare nel caso in cui il campo detinazione sia stringa o numerico ect ect ect
end;
end;
NB: Codice scritto al volo e non testato.
Ovviamente se la tabella sorgente contiene pochi record e/o la conversione deve essere fatta solo una volta
allora questo giochino si può fare ma se i record diventano "importanti" e la conversione avviene molto di frequente sarebbe
opportuno pensare a qualcosa di diverso, come ad esempio mappare in anticipo i campi delle 2 tabelle ed avere già pronta la
funzione di conversione
Un Saluto