problema na conversão entre access e firebird

Delphi

03/12/2007

Olá,

Estou convertendo uma tabela do access para o firebird. Está acontecendo o seguinte erro:

Tenho um campo ´diversos1´, na tabela do access que em alguns registros está vazio, mas ao movê-lo para o campo no firebird, preenche com o último conteúdo do campo. Ex: se no registro 10 estiver ´teste´ e nos registros 11 e 12 estiverem vazios, ao passar para o firebird os registros 11 e 12 ficarão com ´teste´.

begin
numero := 0;

// fechando as tabelas;
tab_access.close;
tab_telefones.close;

// abrindo as tabelas;
tab_access.open;
tab_telefones.open;

// posicionado no primeiro registro;
tab_access.First;

// lendo o arquivo do access até o fim;
while not tab_access.EOF do
begin
numero := numero + 1;
edt_numero.text := IntToStr(numero);
tab_telefones.append;

// limpando os campos;
tab_telefonescodigo.clear;
tab_telefonesnome.clear;
tab_telefonesfuncao.clear;
tab_telefonescidade.clear;
tab_telefonesfixo.clear;
tab_telefonescelular.clear;
tab_telefonesoutros.clear;
tab_telefonesendereco.clear;
tab_telefonesnascimento.clear;
tab_telefonesobservacoes.clear;
tab_telefonesoutros2.clear;
tab_telefonesoutros3.clear;
tab_telefonesmsn.clear;
tab_telefonesskype.clear;

// movendo os dados do access para o Firebird;
tab_telefonescodigo.value := numero;
tab_telefonesnome.value := tab_accessnome.value;
tab_telefonesfuncao.value := 1;
tab_telefonescidade.value := 1;
tab_telefonesfixo.value := tab_accesstelefone1.value;
tab_telefonesobservacoes.value := tab_accessdiversos.value;
tab_telefonesoutros2.value := tab_accessdiversos1.value;
tab_telefones.post;
end;
close;
end;


Rsa_tche

Rsa_tche

Curtidas 0

Respostas

Gandalf.nho

Gandalf.nho

03/12/2007

Você tem que dar um tab_access.next no final de cada conjunto de instruções, para fazer com que a tabela de origem dos dados se mova para o próximo registro. Além disso, não é necessário dar os Clear nos campos da tabela de destino, já que o Append cria um registro em branco.


GOSTEI 0
Rsa_tche

Rsa_tche

03/12/2007

já tem o tab_access.next, no fonte ele está após o tab_telefones.post;


GOSTEI 0
Silviogs

Silviogs

03/12/2007

Olá

hile not tab_access.EOF do begin

numero := numero + 1;

edt_numero.text := IntToStr(numero);

tab_telefones.insert; // o insert vai para o fim da tabela

tab_telefonescodigo.asstring := intotostr(numero);
tab_telefonesnome.asstring := tab_accessnome.asstring;
tab_telefonesfuncao.asstring := ´1´;
tab_telefonescidade.asstring := ´1´;
tab_telefonesfixo.asstring := tab_accesstelefone1.asstring;
tab_telefonesobservacoes.asstring := tab_accessdiversos.asstring;
tab_telefonesoutros2.asstring := tab_accessdiversos1.asstring;
tab_telefones.post;
tab_access.next;

end;

para converter tabela de um banco para outro use sempre o asstring que já faz a conversão.

Silvio Guedes


GOSTEI 0
Rsa_tche

Rsa_tche

03/12/2007

OLÁ, Silvio.

Valeu, funcionou legal.


GOSTEI 0
POSTAR