dbExpress - troca de dados entre dois CDS

Delphi

31/10/2005

Estou desenvolvendo uma aplicacao q pega dados de um banco oracle e passa os dados para um firebird, utilizando dbExpress. montei um form para importacao de dados (CEP e CIDADE), duas linhas de dbtipos (conexao, dataset, provider, clientdataset e datasource), cada um no seu banco. Carrego os dados no CDS do oracle, mas jah tentei algumas variacoes de inserir dados no CDS do FB, sem sucesso (via fieldbyname). Alguem pode me dar uma luz?


Bugaloobr

Bugaloobr

Curtidas 0

Respostas

Camilo

Camilo

31/10/2005

caro BugalooBR, gravar dados no FB, via dbexpress é coisa simples, ficaria mais fácil se vc colocasse ae a instrução q está tentando passar.....
se preferir, msn
camilo_meganews@hotmail.com


GOSTEI 0
Bugaloobr

Bugaloobr

31/10/2005

Tentarei explicar o mais possivel o perfil do sistema:
De um lado temos um banco Oracle, no qual residem os dados a serem obtidos.
A tabela eh Forn, de onde pegarei dados em duas vias, primeiro, CEP (CEPFOR) e CIDADES (CIDFOR), para
preencher uma tabela no FB chamada Cidades, contendo CEP (CEP) e CIDADES (CIDADE), segundo, demais dados
referentes ao fornecedor (se puxar o primeiro, nao terei dificuldade de puxar o segundo).
Criei uma aplicacao utilizando Delphi 2005 e dbExpress, no datamodule (DM) crie duas colunas de componentes de acesso a dados (connection CONNX, dataset DS, datasetprovider DSP, clientdataset CDS, datasource SRC), uma para o Oracle e outra para o FB. Para ter certeza do evento de importacao, crie dois dbgrid mostrando os dados em ambos os bancos.
Quando carrego os dados no lado Oracle, tudo bem, aparece tudo o que eu quero no dbgrid.
Duando clico para importar dados, verifico o FB e nao ha nada (nada foi importado).
Do lado Oracle, no dataset, na propriedade CommandText tenho:

select x.cepfor, x.cidfor from FORN
where x.cepfor > 1000000

Com isto ele polula o dbgrid corretamente. Entao, tenho um botao importar que possui a seguinte programacao:

procedure TfrmCidades.btnImportarClick(Sender: TObject);
var
CEP : integer;
CIDADE: string;
begin
if DMPrincipal.connxFB.Connected = False then // testa se a conexao estah desligada, ligando-a
begin
DMPrincipal.connxFB.Connected := True;
end; // verificar conexao com banco. Fazer conexao
DMPrincipal.cdsCidadesFB.Active := True;
DMPrincipal.dsCidadesFB.Active := True;
with DMPrincipal.cdsCidadesOracle do
begin
DMPrincipal.cdsCidadesOracle.FileName := ´c:\Cidades_CEPs.XML´; // carrega os CDS com dados e salva num XML
savetofile;
end;
with DMPrincipal.cdsCidadesFB do
begin
DMPrincipal.cdsCidadesFB.FileName := ´c:\Cidades_CEPs.XML´; // carrega o CDS com os dados salvos no XML
loadfromfile;

while DMPrincipal.cdsCidadesFB.Eof do
DMPrincipal.cdsCidadesFB.First;
DMPrincipal.cdsCidadesFB.CommandText := ´insert into CIDADES (CEP, CIDDADES) values (:CEPFOR, :CIDFOR)´;
DMPrincipal.cdsCidadesFB.FieldByName(´CEPFOR´).AsInteger := CEP;
DMPrincipal.cdsCidadesFB.FieldByName(´CIDFOR´).AsString := CIDADE;
DMPrincipal.cdsCidadesFB.Next;
end;
DMPrincipal.cdsCidadesFB.ApplyUpdates(-1);
end;

Tudo vai sem problema, mas quando clico no botao Mostrar dados (no FB), o grid estah vazio.


GOSTEI 0
POSTAR