FireDac Problemas na hora de Salvar na tabela.
estou tentando fazer um migrador utilizando 2 bancos no PostGres os componentes utilizados são FDConnection e FDQuery em um DataModule e 2 DataSource no Principal Form
o código:
procedure TForm1.btn_migrarClick(Sender: TObject);
var
Index: Integer;
begin
DataServer.DataSet.Close;
DataClient.DataSet.Close;
DataServer.DataSet.Open;
DataClient.DataSet.Open;
try
DataServer.DataSet.First;
Index := DataClient.DataSet.RecordCount;
while not DataServer.DataSet.EoF do
begin
if not (DataClient.DataSet.FieldByName('ibge').Value = DataServer.DataSet.FieldByName('ibge').Value) then
begin
Index := Index + 1;
Label1.Caption := 'Migrando: ' + DataServer.DataSet.FieldByName('desc_cidade').AsString;
DataClient.DataSet.Append;
DataClient.DataSet.FieldByName('id_cidade').AsInteger := Index;
DataClient.DataSet.FieldByName('ibge').AsInteger := DataServer.DataSet.FieldByName('ibge').AsInteger;
DataClient.DataSet.FieldByName('cidade').AsString := DataServer.DataSet.FieldByName('desc_cidade').AsString;
DataClient.DataSet.Post;
DataServer.DataSet.Next;
end;
end;
except
end;
end;
O que ocorre o mesmo aparentemente faz tudo o que eu quero, ele ata aparece na grid que coloquei para confirmação, porém ao consultar no banco é como se não salva-se, já coloquei um FDQuery.ApplyUpdates(0); FDConnection.Commit;
Porém de todas as formas que eu faço não salva de jeito nenhum na Tabela.
Se alguém conseguir me auxiliar a entender isso ficaria muito grato, se houver a necessidade de mais informações também estou a disposição.
o código:
procedure TForm1.btn_migrarClick(Sender: TObject);
var
Index: Integer;
begin
DataServer.DataSet.Close;
DataClient.DataSet.Close;
DataServer.DataSet.Open;
DataClient.DataSet.Open;
try
DataServer.DataSet.First;
Index := DataClient.DataSet.RecordCount;
while not DataServer.DataSet.EoF do
begin
if not (DataClient.DataSet.FieldByName('ibge').Value = DataServer.DataSet.FieldByName('ibge').Value) then
begin
Index := Index + 1;
Label1.Caption := 'Migrando: ' + DataServer.DataSet.FieldByName('desc_cidade').AsString;
DataClient.DataSet.Append;
DataClient.DataSet.FieldByName('id_cidade').AsInteger := Index;
DataClient.DataSet.FieldByName('ibge').AsInteger := DataServer.DataSet.FieldByName('ibge').AsInteger;
DataClient.DataSet.FieldByName('cidade').AsString := DataServer.DataSet.FieldByName('desc_cidade').AsString;
DataClient.DataSet.Post;
DataServer.DataSet.Next;
end;
end;
except
end;
end;
O que ocorre o mesmo aparentemente faz tudo o que eu quero, ele ata aparece na grid que coloquei para confirmação, porém ao consultar no banco é como se não salva-se, já coloquei um FDQuery.ApplyUpdates(0); FDConnection.Commit;
Porém de todas as formas que eu faço não salva de jeito nenhum na Tabela.
Se alguém conseguir me auxiliar a entender isso ficaria muito grato, se houver a necessidade de mais informações também estou a disposição.
Fernando Ferrari
Curtidas 0
Respostas
Alberto
08/02/2017
Se vc esta usando um TFDQuery como está o select quando vc abre a tabela cliente?
E a Query da tabela server onde está?
Porque parece que vc esta usando o mesmo componente para acessar duas tabelas ????
E a Query da tabela server onde está?
Porque parece que vc esta usando o mesmo componente para acessar duas tabelas ????
GOSTEI 0