Fórum insert com select #326963

08/08/2006

0

galera,
preciso fazer um [b:979e3e449d]insert[/b:979e3e449d] com [b:979e3e449d]select[/b:979e3e449d], só que a tabela do Insert está em um banco de dados em [b:979e3e449d]SQL Server[/b:979e3e449d] e a tabela do select está em um Banco de Dados [b:979e3e449d]Firebird[/b:979e3e449d],
[color=red:979e3e449d][b:979e3e449d]TEM COMO FAZER ISSO ?[/b:979e3e449d][/color:979e3e449d]


Fabiano Góes

Fabiano Góes

Responder

Posts

08/08/2006

Nightshade

crie 2 conexoes com banco de dados, uma com o banco firebird e outra com o SQL server.
com o componente ibquery da IBX ou com o sqlquery da DBX digite o comando

ibquery.close;
ibquery.sql.clear;
ibquery.sql.add(´select * from nomedatabela where campo=valor´);
ibquery.open;
auxiliar := ibquery.fieldbyname(´campo´).asstring;

dai so da o comando de insert com o sqlquery seguindo os mesmos procedimentos, e no fieldbyname passe esse valor da variavel auxiliar...
explikei meio por cima pq to meio sem tempo pra ajuda :/


Responder

Gostei + 0

08/08/2006

Fabiano Góes

nightshade,
VALEU PELA ATENÇÃO.

bom não sei se entendi direito, pelo que entendi será feito apenas 1 insert pois o select retorna apenas um resultado, só que o meu problema e justamente esse, preciso levar todos os dados da tabela do Firebird para a tabela do SQl Server então o select deveria ser Select * from Tabela.

é ai que está me pegando, eu não queria fazer insert um a um, nem sei se é possivel isso mais se alguem tiver uma sugestão eu agradeço !!


Responder

Gostei + 0

08/08/2006

Dadonas

Faz o seguinte:

Crie uma conexão e um dataset para cada um.
A query do FireBird vamos chamar de QryFirebird.
A query do SQLServer vamos chamar de QrySServer.
O SQL da QryFireBird será então:

select * from nome_tabela

O SQL da QrySServer será:

insert into nome da tabela(campo1,campo2,...etc)
values
:p_campo1,:p_campo2,etc)

A rotina será a seguinte:

QryFireBird.Open;
QryFireBird.First;
while not QryFireBird.Eof do
begin
QrySServer.close;
QrySServer.paramns[0].Value := QryFireBird.FieldbyName(´CAMPO1´).Value;
QrySServer.paramns[1].Value := QryFireBird.FieldbyName(´CAMPO2´).Value;
QrySServer.paramns[2].Value := QryFireBird.FieldbyName(´CAMPO3´).Value;
//...e assim por diante dependendo de quantos campos tem as tabelas.
QrySServer.ExecSql;
QryFireBird.Next;
end;

Não se esqueça de dar um Commit no SQLServer depois de toda a operação.

Espero ter ajudado,
Abraço.


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar