Importar Dados de um Banco de Dados para o Outro Usando IBX
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 :( :(
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
Curtidas 0
Respostas
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:
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
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!!!
Valeu pela Intensão Irmão!!!
GOSTEI 0
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....
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
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
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..;.
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
15/01/2009
Ola, vou mostrar aqui como transportar por SQL com duas tabelas com a mesma estrutura.
Veja o exemplo
Assim vc insere o conteudo da tabela ´MOVIMENTO´ para a tabela ´MOVIMENTO2´
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
15/01/2009
Vendo o teu codigo acima, eu aqui não uso o VALUE do insert para trasnferir
E também aqui nesta linha
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...
[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
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