Mostrando postagens com marcador Delphi. Mostrar todas as postagens
Mostrando postagens com marcador Delphi. Mostrar todas as postagens

terça-feira, 10 de julho de 2012

Alterando a propriedade SQLConnection no delphi em tempo de execução

Recentemente, tive uma necessidade de alterar a SQLConnection do banco de dados SQLServer em tempo de execução , em um sistema em delphi.
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';
mas, não foi tão simples assim...

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.

domingo, 8 de julho de 2012

Delphi - ClientDataSet gravação em xml


Utilizando o componente ClientDataSet para gravar e recuperar dados via XML.
Primeiramente, selecione na aba Data Access, inclua um componente ClientDataSet no formulário.


Clicando com o botão direito sobre o componente ClientDataSet
Adicione os campos selecionando a opção Fields Editor...



Em seguida, selecione New Field...  
adicione todos os campos, informando o nome e o Tipo do campo
 



Agora, clique com o botão direito no clientdataset e selecione Create Dataset

Para incluir os campos criados no formulário, você pode selecionar todos os campos e arrastar para o formulário, automaticamente os campos já estarão ligados ao datasource

Agora vamos incluir um DBGrid, na aba Data Controls.
Inclua também um componente DBNavigator, para a manipulação e navegação dos dados, não esqueça de ligar ao dataSource faça a ligação do DBGrid ao DataSource1


Clique uma vez no ClientDataSet em seguida, Duplo clique no evento AfterPost é neste evento que vamos salvar o arquivo .XML, que irá armazenar os dados.
No Evento OnCreate do Formulário vamos ler o arquivo .XML
Na primeira vez, que executarmos, o arquivo não existirá, portanto, vamos verificar caso não exista , vamos criar.
 
Pronto, agora é só testar, incluindo alguns dados.


video aula disponível em https://vimeo.com/45411385


até ao proximo post.