Fórum Importar Dados de um Banco de Dados para o Outro Usando IBX #367744
15/01/2009
0
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
Curtir tópico
+ 0Posts
15/01/2009
Adriano_servitec
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
16/01/2009
Rafaelpinto11
Valeu pela Intensão Irmão!!!
Gostei + 0
16/01/2009
Rafaelpinto11
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
16/01/2009
Adriano_servitec
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
17/01/2009
Rafaelpinto11
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
18/01/2009
Adriano_servitec
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
18/01/2009
Adriano_servitec
Query2.SQL.Add(´values (:CEP, :BAIRRO, :CIDADE, :UF)´);
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
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
Clique aqui para fazer login e interagir na Comunidade :)