Importar Dados de um Banco de Dados para o Outro Usando IBX

Delphi

15/01/2009

Boa Noite Pessoal,

Preciso fazer uma [b:27d2fecf7f]importação[/b:27d2fecf7f] de registros de um Banco de Dados para o Outro[b:27d2fecf7f](Transformar os 2 Bancos em UM só) [/b:27d2fecf7f]e Preciso criar uma [b:27d2fecf7f]Rotina[/b:27d2fecf7f] de como se gravar ou copiar registros do Banco de Origem para o de Destino. Eu quebrei a cuca, tentei fazer do meu jeito mas não consegui. Minha mente não é aberta assim pra tanto. Eu só preciso de uma [b:27d2fecf7f][u:27d2fecf7f]rotina de programação[/u:27d2fecf7f][/b:27d2fecf7f] que Copie(Ou Grave) registros do Banco ORIGEm para o Banco Destino. E Se for em [b:27d2fecf7f]IBX[/b:27d2fecf7f], vou ficar muito agradecido, pois só sei programar em IBX. Os Dois Banco são em INTERBASE e uso o Delphi 7. Se alguém puder me ajudar, me passando algun código, apostilas, tutorias ou algum artigo irá me ajudar e muito. Fico no Aguardo Galera...

Abraços...

Rafael :( :(


Rafaelpinto11

Rafaelpinto11

Curtidas 0

Respostas

Adriano_servitec

Adriano_servitec

15/01/2009

Olá, vc quer via código no Delphi?
Se for e, se vc tiver no fields editor da mesma estrutura de campos na mesma ordem, vc pode utilizar um método genérico. Ex:

procedure TseuForm.xxxxx
var i: integer;
begin
     suatable1.First;
     while not table1.Eof do begin
           suatable2.Insert;
           for i := 0 to suatable1.Fields.Count - 1 do
               suatable2.Fields[i].Value := suatable1.Fields[i].value;
           suatable2.Post;
           suatable1.Next;
     end;
end; 



GOSTEI 0
Rafaelpinto11

Rafaelpinto11

15/01/2009

É via código Delphi 7 sim e usando a Metodologia IBX...Vou tentar implementar essa estrutura que vc me passou no que eu quero fazer...Eu posto uma resposata se der certo ou não.

Valeu pela Intensão Irmão!!!


GOSTEI 0
Rafaelpinto11

Rafaelpinto11

15/01/2009

Adriana_Servitec,

Vc tem uma idéia de como ficaria essa estrutura usando sintaxe SQL, exemplo... Eu uso Querys, e queria saber como seria usando:


query2.sql.clear
query2.sql.Add( ´Insert Into CEP xxxxxxxx´);
query2.parambyname(´CAMPO´).astrsin := query1.fieldbyname(´CAMPO´).asstring;
Query2.execSQL;


E Tbm quero lhe falar que o Banco não é Generico, que A Tabela DESTINO tem mais campos que a TABELA Origem... Se vc me der uma Luz...ficarei Muito Grato....


GOSTEI 0
Adriano_servitec

Adriano_servitec

15/01/2009

Adriana_Servitec, Vc tem uma idéia de como ficaria essa estrutura usando sintaxe SQL, exemplo... Eu uso Querys, e queria saber como seria usando: query2.sql.clear query2.sql.Add( ´Insert Into CEP xxxxxxxx´); query2.parambyname(´CAMPO´).astrsin := query1.fieldbyname(´CAMPO´).asstring; Query2.execSQL; E Tbm quero lhe falar que o Banco não é Generico, que A Tabela DESTINO tem mais campos que a TABELA Origem... Se vc me der uma Luz...ficarei Muito Grato....


Tente assim
INSERT INTO destino
          (campoDestino)
   SELECT campoOrigem
           FROM origem
        WHERE
          campoDestino = CampoOrigem


[color=red:5abcc0538f]Adriana_Servitec[/color:5abcc0538f]
Ai não heim...Ta me estranhando :x :D


GOSTEI 0
Rafaelpinto11

Rafaelpinto11

15/01/2009

[b:8e340dcd32] ADRIANO[/b:8e340dcd32]



Não deu pra fzer da forma acima, para testar, estou tentando fazer com a tabela de CEP, para não ter perigo de Errar com alguma tabela de registro e eu fiz da seguinte forma:


Coloquei esse código dentro de um BtnButton desta forma:


procedure TFImportDados.BtnImportClick(Sender: TObject);
begin
Query2.Close;
Query2.SQL.Clear;
query2.SQL.Add(´Insert into CEP1 (CEP, BAIRRO, CIDADE, UF)´);
Query2.SQL.Add(´values (:CEP, :BAIRRO, :CIDADE, :UF)´);
Query1.SQL.add(´Select * from CEP where CEP = CEP, BAIRRO = BAIRRO, CIDADE = CIDADE, UF = UF´);
Query2.ParamByName(´CEP´).AsInteger :=Query1.fieldbyname(´CEP´).AsInteger;
query2.ParamByName(´BAIRRO´).AsString := Query1.fieldbyname(´BAIRRO´).AsString;
Query2.ParamByName(´CIDADE´).AsString := Query1.fieldbyname(´CIDADE´).AsString;
Query2.ParamByName(´UF´).AsString := Query1.fieldbyname(´UF´).AsString;
Query2.ExecSQL;
end;

e quando mando compilar e executar a importação clicando no BtnButton, dá o Seguinte erro: ´Query1, field CEP not found´. Sendo que eu já testei com outros campos, e continua dando o mesmo erros sendo que com outros nomes de campos né...Eu não uso intrução SQL dentro da Query, Eu uso a instrução SQL no Código mesmo. Não estou conseguindo resolver....

Abraços ADRIANO...Se puder me dar uma luz...agradeço..;.


GOSTEI 0
Adriano_servitec

Adriano_servitec

15/01/2009

Ola, vou mostrar aqui como transportar por SQL com duas tabelas com a mesma estrutura.

Veja o exemplo
--Inserir na segunda tabela os registros da primeira tabela via SQL

insert into movimento2 (
        idmovimento,
        idloja,
        idcaixa,
        dtmovimento,
        vdnaofinalizada,
        cxnaoinformado,
        inversaopgto,
        vdfinaldeumdiapoutro,
        cxinfemdterrada,
        vlinformadocorretamente,
        sangriaincorreta,
        outrostperros)

   SELECT *
           FROM movimento A
            WHERE
                a.idmovimento             = movimento2.idmovimento
                    and
                a.idloja                  = movimento2.idloja
                    and
                a.idcaixa                 = movimento2.idcaixa
                    and
                a.dtmovimento             = movimento2.dtmovimento
                    and
                a.vdnaofinalizada         = movimento2.vdnaofinalizada
                    and
                a.cxnaoinformado          = movimento2.cxnaoinformado
                    and
                a.inversaopgto            = movimento2.inversaopgto
                    and
                a.vdfinaldeumdiapoutro    = movimento2.vdfinaldeumdiapoutro
                    and
                a.cxinfemdterrada         = movimento2.cxinfemdterrada
                    and
                a.vlinformadocorretamente = movimento2.vlinformadocorretamente
                   and
                a.sangriaincorreta        = movimento2.sangriaincorreta
                    and
                a.outrostperros           = movimento2.outrostperros


Assim vc insere o conteudo da tabela ´MOVIMENTO´ para a tabela ´MOVIMENTO2´


GOSTEI 0
Adriano_servitec

Adriano_servitec

15/01/2009

Vendo o teu codigo acima, eu aqui não uso o VALUE do insert para trasnferir

Query2.SQL.Add(´values (:CEP, :BAIRRO, :CIDADE, :UF)´); 


E também aqui nesta linha
Query1.SQL.add(´Select * from CEP [color=red:deed7bf86c]where CEP = CEP, BAIRRO = BAIRRO, CIDADE = CIDADE, UF = UF´[/color:deed7bf86c]);

Vc não pode jogar numa condição do where virgulas entre os campos, tem que ter alguma função tipo [b:deed7bf86c]AND, OR, BETWEEN, >, <, =,[/b:deed7bf86c] Etc...


e quando mando compilar e executar a importação clicando no BtnButton, dá o Seguinte erro: ´Query1, field CEP not found´.


[b:deed7bf86c]´Query1, field CEP not found´[/b:deed7bf86c]
Este erro provavelmente é pq vc não alimentou o TFields do Query com os campos da tabela.

Tente assim
Insert into CEP1  
                (CEP, 
                  BAIRRO, 
                  CIDADE, 
                  UF)
            Select * from CEP 
                    where CEP = cep1.CEP
                                and 
                              BAIRRO = cep1.BAIRRO
                                and
                              CIDADE = cep1.CIDADE
                                and
                              UF = cep1.UF 



GOSTEI 0
POSTAR