ActiveDelphi - Índice do Fórum ActiveDelphi
.: O site do programador Delphi! :.
 
 FAQFAQ   PesquisarPesquisar   MembrosMembros   GruposGrupos   RegistrarRegistrar 
 PerfilPerfil   Entrar e ver Mensagens ParticularesEntrar e ver Mensagens Particulares   EntrarEntrar 

Não sei se é aqui que posto ou mesmo se posso postar

 
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Delphi
Exibir mensagem anterior :: Exibir próxima mensagem  
Autor Mensagem
abagattini
Mestre
Mestre


Registrado: Terça-Feira, 29 de Novembro de 2005
Mensagens: 758
Localização: Porto Alegre/RS

MensagemEnviada: Sáb Out 08, 2016 8:44 am    Assunto: Não sei se é aqui que posto ou mesmo se posso postar Responder com Citação

Não sei se é aqui que posto ou mesmo se posso postar.

Uma função que uso muito em meus sistemas.
Código:

function GetValor(Tabela,CampoProcurar,OQueProcurar,CampoRetornar:STring):String;
var sds:TSimpleDataset;
begin
  sds:=TSimpleDataSet.Create(Self);
  TRY
    sds.Connection:=dm.SQLConnection1;
    sds.Close;
    sds.DataSet.CommandText:='SELECT '+CampoRetornar+' FROM '+Tabela+' WHERE ('+CampoProcurar+'='+QuotedStr(OQueProcurar)+')';
    sds.Open;
    Result:=sds.Fields[0].AsString;
  FINALLY
    sds.Close;
    sds.Free;
  END;
end;

Como usar...
Código:

NomeCliente:=GetValor('CLIENTES','ID_CLIENTE',10,'RAZAO_SOCIAL');
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular Enviar E-mail MSN Messenger
johnny-walker
Moderador
Moderador


Registrado: Sábado, 4 de Outubro de 2003
Mensagens: 10653
Localização: Contagem/MG - BRAZIL

MensagemEnviada: Sáb Out 08, 2016 9:37 am    Assunto: Responder com Citação

Amigo utilize parametrização na sua função e quando for referente a número você pode fazer pelo datatype.

Eis uma função que é mais simples do que a que utilizo para buscar dados:
Código:
function cdsSearch(Cds: TClientDataSet; TypeSearch: TTypeLocalizar; wSearch:
AnsiString; Index: Byte; KindSearch: TKindSearch): Integer;
begin
     Cds.Close;
     case TypeSearch of
       fsInteger: Cds.Params[Index].AsInteger := StrToInt(wSearch);
       fsAnsiString: begin
                      //KindSearch := TKindSearch(4);
                      Case KindSearch of
                         fromBegin:    cds.Params[Index].AsAnsiString := AnsiUpperCase(wSearch + '%');
                         fromAnywhere: cds.Params[Index].AsAnsiString := AnsiUpperCase('%' + wSearch + '%');
                         fromEnd:      cds.Params[Index].AsAnsiString := AnsiUpperCase('%' + wSearch);
                      end;
                 end;
     end;
     Cds.Open;
     Result := Cds.RecordCount;
     if Result = 0 then
        Application.MessageBox('Nenhum registro similar encontrado.',
        'AVISO DO SISTEMA - Pesquisa', MB_ICONINFORMATION+MB_OK);
end;

type
TTypeLocalizar   = (fsInteger, fsAnsiString);
// Não uttilizo, mas o proncípio é o mesmo
procedure FilterCDS(aCds: TClientDataSet; aType: TTypeLocalizar; aBusca: AnsiString);
begin
  aCds.Close;
  case aType of
    fsInteger: aCds.Params[0].AsInteger := StrToInt(String(aBusca));
    fsAnsiString:  aCds.Params[0].AsString := AnsiUpperCase('%' + String(aBusca) + '%');
  end;
  aCds.Open;
end;




Não utilizo nenhuma das duas supracitadas, foi só para exemplificar, no caso eu utilizo uma que descobre sozinho o tipo de dados utilizando datatype e rtti para algumas coisas, sendo um pouco maior do que esta, mas o princípio é o mesmo.

Nestas funções tem de haver uma função que monta o sql. Mas o benefício é que não importa a quantidade de campos a serem procurados, utilizo a mesma função interdependente da quantidade de campos.


bye
_________________
P.O.W.E.R B.Y D.E.L.P.H.I
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular MSN Messenger
Mostrar os tópicos anteriores:   
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Delphi Todos os horários são GMT - 3 Horas
Página 1 de 1

 
Ir para:  
Enviar Mensagens Novas: Proibido.
Responder Tópicos Proibido
Editar Mensagens: Proibido.
Excluir Mensagens: Proibido.
Votar em Enquetes: Proibido.


Powered by phpBB © 2001, 2005 phpBB Group
Traduzido por: Suporte phpBB