[firebase-br] 2 BD's (p/ RedDevil)
RedDevil
reddevil em reddevil.eti.br
Ter Dez 14 00:21:36 -03 2004
ola Denis.
tudo bem contigo?
sincerely, espero que sim.
o que eu fiz ontem foi o seguinte...
suponha que voce tenha dois bancos de dados, um chamado DragonEgg.FdB, no qual tem uma tabela povoada chamada "medicamentos", e o outro banco de dados chamado SnakeEgg.FdB, no qual existe uma tabela vazia chamada "materiais", okeyz?
entao eu coloquei no form dois componentes IB_Connection, ligando-os aos bancos de dados (um para cada banco, evidentemente...;o), dois componentes IB_Query, ligando cada um deles a uma das tabelas (IB_Query1 --->medicamentos, IB_Query2 --->materiais), e tambem coloquei no form um componente IB_Transaction, no qual eu informei o componente IB_Query2 (materiais), e usei a primeira alternativa que voce mencionou, fiz algo semelhante a isso æ abaixo:
{ -------------------------------------------------------- }
IB_Query1.Open;
IB_Query2.Open;
IB_Query1.First;
While Not IB_Query1.EOF Do
Begin
IB_Query2.Insert;
IB_Query2.FieldByName( 'codigo' ).AsInteger :=
IB_Query1.FieldByName( 'codigo' ).AsInteger;
IB_Query2.FieldByName( 'material' ).AsString :=
IB_Query1.FieldByName( 'medicamento' ).AsString;
...
IB_Query2.Post;
IB_Query1.Next;
End;
IBTransaction1.Commit;
IB_Query1.Close;
IB_Query2.Close;
{ -------------------------------------------------------- }
agora a pouco eu tentei ver se conseguia fazer a mesma historia usando uma unica IB_Query, na qual coloquei o seguinte SQL:
insert into materiais (codigo, material, valorcusto, valorpmc)
select codigo, medicamento, valorcusto, valorpmc from medicamentos
para tentar passar os dados de uma tabela para a outra em uma unica vez, mas nao consegui fazer a historia funcionar (talvez alguem mais funfado no IBObjects consiga...;o), tipow se a gente deixa a propriedade DataBaseName da IB_Query em branco, da uma msg de erro em um dos BPLs do IBObjects, e se a gente informa um dos componentes IB_Connection (nao sei se voce usa o IBObjects, mas, quando a gente vai informar o banco no DataBaseName da IB_Query, ao inves de ser listado IB_Connection1 e IB_Connection2, ele lista o nome do banco, algo assim: "C:\Database Home\SnakeEgg.FdB"), da um erro dizendo que falta a tabela que esta no outro banco...
e, para finalizar, quanto a performance, eu nao posso te dizer nada de concreto, pois o teste que eu fiz foi com uma tabela com poucos registros e usando um micro ja tido como obsoleto (um P2 350... apenas para o meu micro nao entrar em umas de azarar comigo por eu chama-lo de obsoleto, vou acrescentar que para mim, para os trabalhos que eu trago do hospital para fazer aqui ele eh excelente, eh mais do que suficiente...;o).
[]s
força sempre.
ate +++
Luiz "RedDevil" Stefanski
=======><=========
====> Delphi 4 <=====
====> powered <=====
======> by <=======
===> IBObjects <=====
=======><=========
more in:
http://www.RedDevil.eti.br (home)
http://www.firebase.com.br/cgi-bin/firebase.cgi/artigo?ID=630 (instalaçao)
http://www.firebase.com.br/cgi-bin/firebase.cgi/dnld?ID=165 ("tips")
----- Original Message -----
From: "Denis da Silva Guerra" <ministeriokairos em yahoo.com.br>
To: "'FireBase'" <lista em firebase.com.br>
Sent: Monday, December 13, 2004 7:47 AM
Subject: RES: [firebase-br] 2 BD's (p/ RedDevil)
De que forma vc faz isso?
Jogando linha a linha da tabela de query para query?
Ou trazendo os dados de uma vez só de uma query para outra?
Como é a performance?
[ ]'s
~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^
Denis da Silva Guerra
denisdsguerra em yahoo.com.br
São José do Vale do Rio Preto - RJ
~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^ .
Mais detalhes sobre a lista de discussão lista