Ir para conteúdo

POWERED BY:

Arquivado

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

Jhony ZaM

[Resolvido] Consulta de Grid

Recommended Posts

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

×

Informação importante

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