Jhony ZaM 1 Denunciar post Postado Junho 24, 2010 Dae galera olha eu aki dinovo!!! Bom vi aki no forum a dificuldade de alguns membros em campos de consulta pois bem resolvi criar um programa com dois tipos de consulta um sem SQl e uma com SQL que por sinal fix com 3 tipos de consultas por 3 campos diferentes. Comentei bem o codigo entao qualquer duvida voces postem aki que eu as tiro. unit untConsulta; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, WideStrings, DBXOracle, FMTBcd, StdCtrls, DB, ExtCtrls, Grids, DBGrids, Provider, DBClient, SqlExpr, Buttons; type TesteSQL = record //variavel que ira receber os likes diferenciados no sql Padrao: string; // padrao eh a parte principal do sql Adicional: string; // adicional soa principlamente os where que serao modificados end; TForm1 = class(TForm) ConTeste: TSQLConnection; qryTeste: TSQLQuery; cdsTeste: TClientDataSet; dtsProvider: TDataSetProvider; dtsTeste: TDataSource; DBGrid1: TDBGrid; Panel1: TPanel; edtTeste: TEdit; cdsTesteDESCRICAO_15: TWideStringField; rbtBusca1: TRadioButton; rbtBusca2: TRadioButton; rbtBusca3: TRadioButton; cdsTesteITEM_ESTRUTURA: TWideStringField; cdsTesteSUBGRU_ESTRUTURA: TWideStringField; btnConsulta: TBitBtn; ckbAtiva: TCheckBox; btnFiltro: TBitBtn; procedure btnConsultaClick(Sender: TObject); procedure edtTesteKeyUp(Sender: TObject; var Key: Word; Shift: TShiftState); procedure btnFiltroClick(Sender: TObject); procedure BuscaFuncao; procedure FormCreate(Sender: TObject); private { Private declarations } public SqlTemp: TesteSQL; // VAriavel criada para usar o sql tipo Record { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} {-------------------------------------------------------------------------------} procedure TForm1.btnConsultaClick(Sender: TObject); begin cdsTeste.Close; //fecha e abre ClientDataSet cdsTeste.Open; end; {-------------------------------------------------------------------------------} procedure TForm1.btnFiltroClick(Sender: TObject); //essa funcao pode ser parte do codigo pode ser colocada no OnKeyUp do edit kaso keira terstar comente essa parte e descomente ali em baixo; begin if ckbAtiva.Checked = False then Begin// se check box desativado fas esse filtro cdsTeste.Filtered := false; cdsTeste.Filter := '( DESCRICAO_15 LIKE ' + QuotedStr(AnsiUpperCase(edtTeste.text) + '%') + ')'; cdsTeste.Filtered := true; End else // se nao ou seja se tive ativo fas esata procedure BuscaFuncao; end; procedure TForm1.BuscaFuncao; begin //RAdioButon 1 if rbtBusca1.Checked = True then Begin cdsTeste.Close; SqlTemp.Adicional:= ''; // Limpando oq tiver em adicional apenas boa pratica SqlTemp.Adicional:= 'Where COLOQUE O CAMPO DO SEU SQL AKI Like '+ AnsiUpperCase(QuotedStr(edtTeste.Text + '%')); // where colocado no adicional mais o padrao ke eh criado no ONCREATE do form; qryTeste.SQL.Clear; //linpando qryTeste ke eh a qry do form qryTeste.SQL.Text:= SqlTemp.Padrao + SqlTemp.Adicional; // adicionando os sql na qryTeste ShowMessage(qryTeste.Text); cdsTeste.Open; //Abrindo CDS End; //RAdioButon 2 if rbtBusca2.Checked = True then Begin cdsTeste.Close; SqlTemp.Adicional:= ''; SqlTemp.Adicional:= 'Where COLOQUE O CAMPO DO SEU SQL AKI Like '+ AnsiUpperCase(QuotedStr(edtTeste.Text + '%')); // identico a parte de cima apenas modificando o where; qryTeste.SQL.Clear; qryTeste.SQL.Text:= SqlTemp.Padrao + SqlTemp.Adicional; cdsTeste.Open; End; //RAdioButon 3 if rbtBusca2.Checked = True then Begin cdsTeste.Close; SqlTemp.Adicional:= ''; SqlTemp.Adicional:= 'Where COLOQUE O CAMPO DO SEU SQL AKI Like '+ AnsiUpperCase(QuotedStr(edtTeste.Text + '%')); // identico a parte de cima apenas modificando o where; qryTeste.SQL.Clear; qryTeste.SQL.Text:= SqlTemp.Padrao + SqlTemp.Adicional; cdsTeste.Open; End; end; {-------------------------------------------------------------------------------} procedure TForm1.edtTesteKeyUp(Sender: TObject; var Key: Word; Shift: TShiftState); begin // if ckbAtiva.Checked = False then Begin // cdsTeste.Filtered := false; // cdsTeste.Filter := '( DESCRICAO_15 LIKE ' + QuotedStr(AnsiUpperCase(edtTeste.text) + '%') + ')'; // cdsTeste.Filtered := true; // End // else // BuscaFuncao; end; procedure TForm1.FormCreate(Sender: TObject); begin SqlTemp.Padrao:= ' select t.item_estrutura, '+ ' t.subgru_estrutura, '+ ' t.descricao_15 from basi_010 t '; end; {-------------------------------------------------------------------------------} end. Espero que ajude ai gente fix meio rapidinho entaum se tiver erros e precisarem de ajuda posta ai. Quem nao ajuda ao menos nao Atrapalhe! vlw By Zam Compartilhar este post Link para o post Compartilhar em outros sites