Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Maneju

Pesquisa Com DataSet

Recommended Posts

Bom dia!

 

Estou começando a migrar os programas procedurais para orientação a objetos. O CRUD orientado a objetos está funcionando, porém, agora tenho dúvidas de como implementar a pesquisa por nome (uso locate com lopartialkey) que está ligado à um grid. Por enquanto, fiz esta busca procedural, minha dúvida é se tem como (acredito q sim pois vi algo parecido) fazer isto numa classe/objeto pesquisa que me retorne um dataset do que foi encontrado.

 

Grato!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você quer criar a consulta e retornar o dataset como retorno, é isto? O componente preenchido com o resultado do comando sql?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Vou por um exemplo que uso aqui em um dos meus códigos... dê uma olhada se é +/- isso o que precisa e, se for o caso, usamos ele de base pra discutir alterações.

 

 

{ SQL Server }
Function ConectarSQL( var Conexao               : TADOConnection;
                          bAmbienteTeste        : Boolean;
                          mmErroProcessamento   : TMemo):Boolean;
var sDiretorio : String;
begin
   try
      FreeAndNil(Conexao);
      Conexao := TADOConnection.Create(Conexao);
      sDiretorio := ExtractFilePath(Application.ExeName);
      Conexao.Connected        := False;
      Conexao.LoginPrompt      := False;
      if bAmbienteTeste then
         Conexao.ConnectionString := 'FILE NAME=' + sDiretorio + 'connteste.udl'
      else
         Conexao.ConnectionString := 'FILE NAME=' + sDiretorio + 'connprod.udl';
      Conexao.Connected := True;
      Result := True;
   except
     on E: Exception do
     begin
        if not bAmbienteTeste then
           InsereMensagemMemo('***Não foi possível conectar a base de dados de produção!', mmErroProcessamento, 1)
        else
           InsereMensagemMemo('***Não foi possível conectar a base de dados de testes!', mmErroProcessamento, 1);
        InsereMensagemMemo(E.Message, mmErroProcessamento, 0);
        Result := False;
     end;
   end;
end;

Function PesquisaSQL( sSql: String; bAmbienteTeste: Boolean; mmErroProcessamento: TMemo ):TADOQuery;
var Query: TADOQuery;

begin
   try
      Query := TADOQuery.Create(Application);
      if bAmbienteTeste then
         if ConectarSQL(ConexaoTeste, bAmbienteTeste, mmErroProcessamento) then
            Query.Connection := ConexaoTeste
         else
         begin
            Result := nil;
            Exit;
         end
      else
         if ConectarSQL(ConexaoProducao, bAmbienteTeste, mmErroProcessamento) then
            Query.Connection := ConexaoProducao
         else
         begin
            Result := nil;
            Exit;
         end;

      with Query do
      begin
         SQL.Clear;
         SQL.Add(sSql);
         Open;
      end;
      Result := Query;
   except
     on E: Exception do
     begin
        //Insere a mensagem no memo de resumo de erros da tela
        InsereMensagemMemo('***Erro durante a execução do script SQL!', mmErroProcessamento, 1);
        InsereMensagemMemo(E.Message, mmErroProcessamento, 0);
        Result := nil;
     end;
   end;
end;

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.