fm.eng Postado Abril 27, 2004 Denunciar Share Postado Abril 27, 2004 Preciso copiar todos os registros de uma base de dados do ACCESS para um base do INTERBASE na qual tem uma tabela identica.Quando executo o programa somente O primeiro registro é copiado. Dá o seguinte erro "Key violation". O que eu devo fazer? O codigo é esse:procedure TForm1.FormShow(Sender: TObject);begin//ABRINDO AS TABELAS// ACCESSdatamodule2.ADODataSet1.Active:=true;while not datamodule2.ADODataSet1.Eof dobegin// INTERBASEDATAMODULE2.SQLDataSet1.Active:=TRUE;DATAMODULE2.ClientDataSet1.Active:=TRUE;DATAMODULE2.ClientDataSet1.Insert;//COPIANDO OS REGISTROS DAS BASE ACCESS P/ INTERBASEdatamodule2.ClientDataSet1CODIGO.Value:=(datamodule2.ADODataSet1codigo.AsBCD);datamodule2.ClientDataSet1NOME.Value:=(datamodule2.ADODataSet1nome.Value);datamodule2.ClientDataSet1FABRICANTE.Value:=(datamodule2.ADODataSet1fabricante.Value);datamodule2.ClientDataSet1MODELO.Value:=(datamodule2.ClientDataSet1MODELO.Value);datamodule2.ClientDataSet1FOTO.BlobType:=(datamodule2.ADODataSet1foto.BlobType);// GRAVANDO A TABELA INTERBASE//datamodule2.ClientDataSet1.ApplyUpdates(-1);// FECHANDO A TABELA INTERBASEdatamodule2.ClientDataSet1.Active:=false;datamodule2.SQLDataSet1.Active:=false;end; // fim do laço de repetiçãodatamodule2.ADODataSet1.Active:=false;end;//VALEU, DESDE JÁ AGRADEÇO Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 bolomaster Postado Abril 27, 2004 Denunciar Share Postado Abril 27, 2004 Amigo porque não usa o batchmove para copiar.. as tabelas identicas .. Entre no site do clubedelphi da uma olhada lá nos aplicativos que tem um programa chamado troca dados que faz isso é mais simples de fazer usando batchmove doque desta forma Abraços Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
fm.eng
Preciso copiar todos os registros de uma base de dados do ACCESS para um base do INTERBASE na qual tem uma tabela identica.
Quando executo o programa somente O primeiro registro é copiado. Dá o seguinte erro "Key violation". O que eu devo fazer? O codigo é esse:
procedure TForm1.FormShow(Sender: TObject);
begin
//ABRINDO AS TABELAS
// ACCESS
datamodule2.ADODataSet1.Active:=true;
while not datamodule2.ADODataSet1.Eof do
begin
// INTERBASE
DATAMODULE2.SQLDataSet1.Active:=TRUE;
DATAMODULE2.ClientDataSet1.Active:=TRUE;
DATAMODULE2.ClientDataSet1.Insert;
//COPIANDO OS REGISTROS DAS BASE ACCESS P/ INTERBASE
datamodule2.ClientDataSet1CODIGO.Value:=(datamodule2.ADODataSet1codigo.AsBCD);
datamodule2.ClientDataSet1NOME.Value:=(datamodule2.ADODataSet1nome.Value);
datamodule2.ClientDataSet1FABRICANTE.Value:=(datamodule2.ADODataSet1fabricante.Value);
datamodule2.ClientDataSet1MODELO.Value:=(datamodule2.ClientDataSet1MODELO.Value);
datamodule2.ClientDataSet1FOTO.BlobType:=(datamodule2.ADODataSet1foto.BlobType);
// GRAVANDO A TABELA INTERBASE
//
datamodule2.ClientDataSet1.ApplyUpdates(-1);
// FECHANDO A TABELA INTERBASE
datamodule2.ClientDataSet1.Active:=false;
datamodule2.SQLDataSet1.Active:=false;
end; // fim do laço de repetição
datamodule2.ADODataSet1.Active:=false;
end;
//VALEU, DESDE JÁ AGRADEÇO
Link para o comentário
Compartilhar em outros sites
1 resposta a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.