A necessidade era em um determinado momento consultar dados de um banco de dados em um outro servidor, e importar dados para a conexão atual. Em primeiro momento, pensei que seria simples, só trocar o valor;
- SQLConnection.params.values['Database'] := 'bancox';
- SQLConnection.params.values['HostName'] := 'Servidor1';
depois de algum tempo , cheguei na seguinte solução:
Criei um novo componente NovoSQLConnection, e instancio juntamente com meu SQLConnection.
Criei uma procedure passando por parametro um TComponet , que retorna um objeto TSQLConnection; com o objetivo de , dentro da procedure e percorrer todos os componentes do objeto passado, trocando a sqlconnection para a nova conexão.
Ex: para um DataModule ( DmImportacao ) , tenho query's responsaveis pela importação de dados que pretendo realizar.
a função ficou :
procedure AlterarSqlConnection(Componente:TComponent);
var
i:integer;
begin
{ percorrer todos os componente , e alterar somente os do tipo TSQLQuery }
for i:= 0 to Componente.ComponentCount -1 do
begin
if (Componente.Components[i] is TSQLQuery) then
TSQLQuery(Componente.Components[i]).SQLConnection :=NovoSQLConnection;
end;
end;
end;
Com a função acima, consegui alterar a SQLConnection, no momento que preciso buscar dados de outra conexão. assim é possivel alternar a conexão , sem fechar o sistema.
Nenhum comentário:
Postar um comentário