Ir para conteúdo
Fórum Script Brasil
  • 0

(Resolvido) Consulta com Radiogroups


Walter Gazzarrini Neto

Pergunta

Olá eu utilizo zquery para fazer minhas consultas e gostaria de fazer a seguinte consulta com radiogroups:

No primeiro radiogroup se visa ou master card

No segundo se Débito ou crédito

No terceiro Parcelado ou à vista

Mas eu queria que por exemplo : se ele clicar só no visa aparecesse todos os registros de venda com visa, e se ele clicar no visa debito e Parcelado aparecesse os respectivos registros tb!

eu consigo só de um visa e master card assim:

var
master,visa:string;
begin
Case radiogroup1.ItemIndex of
0:
begin
master:='Master Card';
with dm do
begin
ZQueryVendas.close;
ZQueryVendas.sql.clear;
ZQueryVendas.sql.add('select*from tb_vendas');
ZQueryVendas.sql.add('where UPPER(Mastervisa_venda)Like:Mastervisa_venda');
ZQueryVendas.parambyname('Mastervisa_venda').Asstring:='%'+uppercase(master)+'%';
ZQueryVendas.open;
end;
end
else

 Visa:='Visa';
with dm do
begin
ZQueryVendas.close;
ZQueryVendas.sql.clear;
ZQueryVendas.sql.add('select*from tb_vendas');
ZQueryVendas.sql.add('where UPPER(Mastervisa_venda)Like:Mastervisa_venda');
ZQueryVendas.parambyname('Mastervisa_venda').Asstring:='%'+uppercase(Visa)+'%';
ZQueryVendas.open;
end;
end;

se alguém conseguir interligar eles me ajudem , por favor .......muito obrigado!!!!

Abraços

Link para o comentário
Compartilhar em outros sites

4 respostass a esta questão

Posts Recomendados

  • 0

Vou dar a ideia inicial, não precisa ser necessariamente desta maneira

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls, ExtCtrls;

type
  TForm1 = class(TForm)
    RadioGroup1: TRadioGroup;
    RadioGroup2: TRadioGroup;
    RadioGroup3: TRadioGroup;
    procedure RadioGroup1Click(Sender: TObject);
    procedure RadioGroup2Click(Sender: TObject);
    procedure RadioGroup3Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.RadioGroup1Click(Sender: TObject);
var
master,visa:string;
begin
   case radiogroup1.ItemIndex of
     0:begin
         master:='Master Card';
         with dm do
         begin
         ZQueryVendas.close;
         ZQueryVendas.sql.clear;
         ZQueryVendas.sql.add('select*from tb_vendas');
         ZQueryVendas.sql.add('where UPPER(Mastervisa_venda)Like:Mastervisa_venda');
         ZQueryVendas.parambyname('Mastervisa_venda').Asstring:='%'+uppercase(master)+'%';
         ZQueryVendas.open;
         end;
       end;
     1:begin
         Visa:='Visa';
         with dm do
         begin
         ZQueryVendas.close;
         ZQueryVendas.sql.clear;
         ZQueryVendas.sql.add('select*from tb_vendas');
         ZQueryVendas.sql.add('where UPPER(Mastervisa_venda)Like:Mastervisa_venda');
         ZQueryVendas.parambyname('Mastervisa_venda').Asstring:='%'+uppercase(Visa)+'%';
         ZQueryVendas.open;
         end;
       end;
   end;
end;

procedure TForm1.RadioGroup2Click(Sender: TObject);
begin
case radiogroup2.ItemIndex of
     0:begin
         Tipo:='Debito';
         with dm do
         begin
         ZQueryVendas.close;
         ZQueryVendas.sql.clear;
         ZQueryVendas.sql.add('select*from tb_vendas');
         ZQueryVendas.sql.add('where ....');
         ZQueryVendas.parambyname('.....');
         ZQueryVendas.open;
         end;
       end;
     1:begin
         Tipo:='Credito';
         with dm do
         begin
         ZQueryVendas.close;
         ZQueryVendas.sql.clear;
         ZQueryVendas.sql.add('select*from tb_vendas');
         ZQueryVendas.sql.add('where ....');
         ZQueryVendas.parambyname('.....');
         ZQueryVendas.open;
         end;
       end;
   end;
end;

procedure TForm1.RadioGroup3Click(Sender: TObject);
begin
case radiogroup3.ItemIndex of
     0:begin
         pagamento:='Parcelado';
         with dm do
         begin
         ZQueryVendas.close;
         ZQueryVendas.sql.clear;
         ZQueryVendas.sql.add('select*from tb_vendas');
         ZQueryVendas.sql.add('where ....');
         ZQueryVendas.parambyname('.....');
         ZQueryVendas.open;
         end;
       end;
     1:begin
         Pagamento:='A Vista';
         with dm do
         begin
         ZQueryVendas.close;
         ZQueryVendas.sql.clear;
         ZQueryVendas.sql.add('select*from tb_vendas');
         ZQueryVendas.sql.add('where ....');
         ZQueryVendas.parambyname('.....');
         ZQueryVendas.open;
         end;
       end;
   end;
end;

end.

abraço

Editado por Jhonas
Link para o comentário
Compartilhar em outros sites

  • 0
Olá eu utilizo zquery para fazer minhas consultas e gostaria de fazer a seguinte consulta com radiogroups:

No primeiro radiogroup se visa ou master card

No segundo se Débito ou crédito

No terceiro Parcelado ou à vista

Mas eu queria que por exemplo : se ele clicar só no visa aparecesse todos os registros de venda com visa, e se ele clicar no visa debito e Parcelado aparecesse os respectivos registros tb!

eu consigo só de um visa e master card assim:

var
master,visa:string;
begin
Case radiogroup1.ItemIndex of
0:
begin
master:='Master Card';
with dm do
begin
ZQueryVendas.close;
ZQueryVendas.sql.clear;
ZQueryVendas.sql.add('select*from tb_vendas');
ZQueryVendas.sql.add('where UPPER(Mastervisa_venda)Like:Mastervisa_venda');
ZQueryVendas.parambyname('Mastervisa_venda').Asstring:='%'+uppercase(master)+'%';
ZQueryVendas.open;
end;
end
else

 Visa:='Visa';
with dm do
begin
ZQueryVendas.close;
ZQueryVendas.sql.clear;
ZQueryVendas.sql.add('select*from tb_vendas');
ZQueryVendas.sql.add('where UPPER(Mastervisa_venda)Like:Mastervisa_venda');
ZQueryVendas.parambyname('Mastervisa_venda').Asstring:='%'+uppercase(Visa)+'%';
ZQueryVendas.open;
end;
end;
se alguém conseguir interligar eles me ajudem , por favor .......muito obrigado!!!! Abraços
Cara eu vou Te passar como eu faço: Eu uso o Firebird 2.0.3 E a conexão eu uso os Componentes: IbTransaction IbDataBase IbQuery > 1º Você faz essa função de Consulta Registro (em uma unit de funcoes se caso você não tiver) O DtmIza é o meu DataModule, aqui se caso você tiver o seu é só mudar o nome e o QryIza é a minha Query resposanvel pela a minha conexão com o banco de dados ai aqui você coloca do jeito que você faz a conexão.
function consultaregistros (ptabela, pcampos, pcondicao :string) : boolean;
var instrucaosql :string;
begin
   instrucaosql := 'select ' + pcampos + ' from ' + ptabela;
   if (pcondicao<>'') then
      begin
      instrucaosql := instrucaosql+' where ' + pcondicao;
      end;
   //showmessage (instrucaosql);
   with dtmiza.qryiza do
      begin
         close;
         sql.Clear;
         sql.add (instrucaosql);
         open;
      end;
   result := (not dtmiza.qryiza.IsEmpty);

end;
> 2º Ai você vai fazer um formulario só de pesquisa padrão! Aqui eu vou colocar o nome dos meus componentes que eu coloquei para você saber quais são. Primeiramente: No Form (Formulário) Name = frmpesquisa Unit = FPesquisa No Fomulário você colocará: TRadioGroup = RboIdx // Caption = Chave Label // Caption = Pesquisar Por: TEdit = TxtLoc DbGrid = DbgPes DataSource = DtsPes TSpeedButton = SpbOk // Caption = Ok TSpeedButton = SpbFec // Caption = Fechar Agora o que tem que fazer com os codigos: Primeiramente Declare na Public e Private igual abaixo:
private
    indice : integer;
  public
    tabela, camporetorno : string;
  end;
E coloque em uso abaixo daquele: {$R *.dfm} a unit de funcoes onde foi feito a função de consultaregistro e também coloque o DataModule. Uses Funcoes, FdtmIza Faça uma procedure normal com o nome de: procedure efetuaconsulta (); Aperte Crtl+Sfhit+C e ai coloca os seguintes codigos:
procedure Tfrmpesquisa.efetuaconsulta;
var instrucaosql:string; a:integer;
begin
   indice := rboidx.ItemIndex;
   instrucaosql:= 'select ';
   for a:= 0 to vcpo.count -1 do
      begin
         instrucaosql := instrucaosql+vcpo[a]+', ';
      end;
   instrucaosql:= copy (instrucaosql,1,length(instrucaosql) -2);
   instrucaosql:= instrucaosql + ' from ' + tabela + ' order by ' + vcpo[rboidx.itemindex];
      with dtmiza.qryiza do
         begin
            close;
            sql.Clear;
            sql.add (instrucaosql);
            open;
         end;
      txtloc.text := '';
      txtloc.setfocus;
end;
No Edit (TxtLoc) clice duas vezes e coloque os seguintes dados
if (length (trim(txtloc.Text))=0) then
      begin
         dtspes.dataset.First;
      end;
   if (dtspes.dataset.Fields[indice].datatype=ftstring) then
      begin
         dtspes.DataSet.Locate(dtspes.DataSet.fields[indice].fieldname,txtloc.Text,[lopartialkey, locaseinsensitive]);
      end
   else if (((dtspes.dataset.Fields[indice].datatype=ftdatetime)
             or (dtspes.DataSet.Fields[indice].datatype=ftdate)) and edata(txtloc.Text)) then
      begin
         dtspes.dataset.Locate(dtspes.DataSet.Fields[indice].FieldName,strtodate(txtloc.Text),[locaseinsensitive]);
      end
   else
      begin
         if (enumero(txtloc.Text)) then
            begin
              dtspes.DataSet.Locate(dtspes.DataSet.Fields[indice].FieldName,strtofloat(txtloc.Text),[locaseinsensitive]);
            end;
      end;
No TRadioGroup (RboIdx) clique duas vezes e coloque esses dados
procedure Tfrmpesquisa.rboidxClick(Sender: TObject);
begin
    efetuaconsulta();
end;
Clique duas Vezes no TSpeedButton (SpbOk) e coloque os seguintes dados:
procedure Tfrmpesquisa.SpbOkClick(Sender: TObject);
begin
   retorno := dtmiza.qryiza.fieldvalues [camporetorno];
   close;
end;
No Evento OnDblClick do DbGrid (DbgPes) clique duas vezes e coloque os seguintes dados:
procedure Tfrmpesquisa.dbgpesDblClick(Sender: TObject);
begin
   retorno := dtmiza.qryiza.fieldvalues [camporetorno];
   close;
end;
No Evento OnShow do Formulário de Pesquisa (FrmPesquisa) digite:
procedure Tfrmpesquisa.FormShow(Sender: TObject);
begin
   with rboidx do
      begin
         items.assign (vvlr);
         itemindex :=0;
      end;
end;
Bom esse vvlr é uma StringList: Vai no Formulário Principal seu e declare uam variavel abaixo do name do formulario e declare
vcpo, vvlr : tstringlist;
Ainda no Formulário de Principal vai em Events e no evento OnCreate digite:
procedure Tfrmprincipal.FormCreate(Sender: TObject);
begin
   Vcpo := tstringlist.Create; // alocando memoria para o vcpo e vvlr
   Vvlr := tstringlist.create; 
end;
Bom Esses são os dados que eu uso para fazer os comando da busca! Agora no Formulário em que você quer fazer as busca no botão de pesquisa digite (Esses é os dados que vão aparecer no formulário de pesquisa, ai peguei um de exemplo:)
with vcpo do
      begin
         clear;
         add ('Codigo');
         add ('Nome');
         add ('Cpf');
         add ('Processo');
      end;
   with vvlr do
      begin
         clear;
         add ('Código');
         add ('Nome');
         add ('Cpf');
         add ('Processo');
      end; 
   with TFrmPesquisa.create (application) do
      begin
         try
            tabela := 'alunos';
            camporetorno := 'codigo';
            showmodal;
         finally
            free;
      end;
   end;
   if (retorno<> '') then
      begin
   inherited;
         LeRegistro();
      end;
No Vcpo você vai colocar os dados que você vai querer buscar e no Vvlr são os dados que vão Aparecer no RadioGroup e no DbGrid ai no caso você pode escrever do jeito normal (os nomes) Acho que você vai ter que fazer mais uma função na unit de funcoes, isso é para ler o banco de dados e retornar para o usuario. Function LeDados (Campo : String) : Variant;
Function LeDados (Campo : String) : Variant;
Var ValorCampo : variant;
begin
   If (Not VarIsNull (dtmiza.qryiza.FieldValues[Campo])) Then
   begin
      ValorCampo := dtmiza.qryiza.FieldValues[Campo];
   end
   Else
      begin
         ValorCampo := '0';
      end;
   Result := ValorCampo;
end;
Volte no formulário em que você está efetuando a pesquisa e faz uma procedure LeRegistro e aperte o Crtl+Sfhit+C e digite:
Consultaregistros('Alunos', 'Codigo, Categoria, Nome, Rg, Uf_Rg, Emissor','Codigo =' + Retorno);
      TxtMat.text     := Ledados ('Codigo');
      TxtCth.Text    := LeDados ('Categoria');
      TxtNom.text   := LeDados ('Nome');
      TxtRg.text      := LeDados ('Rg');
      TxtUf2.text     := LeDados ('Uf_Rg');
      CboOrg.text   := LeDados ('Emissor');
    end;
end;

Então aqui ele retorna os dados que estão salvos para os Respectivos edits (TxtMat, TxtCth etc).

No formulário em que você for fazer as busca não esqueça de colocar em uso o Funcoes o Formulário Principal, no caso o nome da unit dele e o de Pesquisa no caso aqui o FPesquisa.

Bom é muitas coisas que tem que fazer, mas espero que dê certo, você tem o meu MSN se caso de duvida é só chamar ou postar para todos te ajudar, caso não consigua semana que vem estarei mas tranquilo pois tenho vestibular sabado agora e ai eu mando um exemplo.

Link para o comentário
Compartilhar em outros sites

  • 0
Olá eu utilizo zquery para fazer minhas consultas e gostaria de fazer a seguinte consulta com radiogroups:

No primeiro radiogroup se visa ou master card

No segundo se Débito ou crédito

No terceiro Parcelado ou à vista

Mas eu queria que por exemplo : se ele clicar só no visa aparecesse todos os registros de venda com visa, e se ele clicar no visa debito e Parcelado aparecesse os respectivos registros tb!

Mais uma opção...

Declare uma procedure no seu form e coloque este código:

procedure TForm1.AtualizaConsulta;
var
  StrFiltro1,
  StrFiltro2,
  StrFiltro3 :string;
begin
  case RadioGroup1.ItemIndex of
    0 : // Master
       StrFiltro1 := 'MASTER CARD';
    1 : // Visa 
       StrFiltro1 := 'VISA';
  else
    StrFiltro1 := '';
  end;

  case RadioGroup2.ItemIndex of
    0 : // Débito
       StrFiltro2 := 'DEBITO';
    1 : // Crédito
       StrFiltro2 := 'CREDITO';
  else
    StrFiltro2 := '';
  end;

  case RadioGroup3.ItemIndex of
    0 : // Parcelado
       StrFiltro3 := 'PARCELADO';
    1 : // A vista
       StrFiltro3 := 'AVISTA';
  else
    StrFiltro3 := '';
  end;


  if StrFiltro1 <> '' then
    StrFiltro1 := 'UPPER(Mastervisa_venda) = '#39 +StrFiltro1+ #39; // #39 = '
  if StrFiltro2 <> '' then
  begin
    StrFiltro2 := 'UPPER(Debito_Credito) = '#39 +StrFiltro2+ #39;
    if StrFiltro1 <> '' then  // se tem filtro 1 adiciona o AND no filtro 2
      StrFiltro2 := ' AND ' +StrFiltro2;
  end;
  if StrFiltro3 <> '' then
  begin
    StrFiltro3 := 'UPPER(Parcelado_AVista) = '#39 +StrFiltro3+ #39;
    if StrFiltro2 <> '' then  // se tem filtro 2 adiciona o AND no filtro 3
      StrFiltro3 := ' AND ' +StrFiltro3;
  end;

  with dm do
  begin
    ZQueryVendas.close;
    ZQueryVendas.sql.clear;
    ZQueryVendas.sql.add('select *');
    ZQueryVendas.sql.add('from tb_vendas');
    ZQueryVendas.sql.add('where ' +StrFiltro1 +StrFiltro2 +StrFiltro3);
    ZQueryVendas.open;
  end;
end;
como você não passou o nome e tipo dos campos referentes a Debito/cretido e Parcelado/avista Pronta a procedure, se for para atualizar a consulta a cada RadioGroup clicado:
procedure TForm1.RadioGroup1Click(Sender: TObject);
begin
  AtualizaConsulta;
end;

procedure TForm1.RadioGroup2Click(Sender: TObject);
begin
  AtualizaConsulta;
end;

procedure TForm1.RadioGroup3Click(Sender: TObject);
begin
  AtualizaConsulta;
end;
se for através de um botão atualizar:
procedure TForm1.Button1Click(Sender: TObject);
begin
  AtualizaConsulta;
end;

Abraços

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,4k
×
×
  • Criar Novo...