DbGrid e recordcount ignorar alguns registros
19/03/2013
0
Usei o código abaixo, e deu certinho:
procedure TForm4.ComboBox1Change(Sender: TObject); begin if (Combobox1.Text = 'Total de Membros') then begin Label1.Caption := 'Total de Membros Cadastrados'; AdoQuery1.Close; AdoQuery1.SQL.Clear; AdoQuery1.SQL.Add('Select *'); AdoQuery1.SQL.Add('From Dados'); AdoQuery1.SQL.Add('Order by Nome'); AdoQuery1.Open; Label2.Caption := IntToStr(AdoQuery1.RecordCount); end;
Porém, preciso acrescentar uma coisa: Se no campo "Status" do banco de dados tiver "Desligado" ou "Não Membro", quero que esse registro seja ignorado, tanto no DBGrid, quando no recordcount.
Ou seja, tenho 10 registros no BD, mas 1 deles o campo "status" ta gravado "Desligado" e outro registro, o campo "status" ta gravado "Não Membro".
Então, meu DBGrid deve mostrar 8 registros, em vez de todos os 10, e o label do recordcount marcar 8.
Fiz assim:
AdoQuery1.SQL.Add('Where Status <> "Desligado" and "Não Membro"');
mas não funcionou.
Também tentei usar
AdoQuery1.SQL.Add('Where Status not in ("Desligado","Não Membro")');
mas retornou zero.
Alguém pode dar uma forcinha?
Edilson Santiago
Posts
19/03/2013
Joel Rodrigues
Qual banco você está usando?
Só pra garantir, no seguinte trecho:
Where Status <> "Desligado" and "Não Membro"
faça a seguinte correção:
Where Status <> "Desligado" and Status <> "Não Membro"
Ah, veja também as questões das aspas, se são duplas ou simples no banco que você está usando.
19/03/2013
Edilson Santiago
Uso banco Access, pq tenho poucos registros. Tentei dessa forma q vc postou, mas também retornou zero.
E não é problema de código, pois se retiro a linha "were" retorna normalmente todos os registros.
20/03/2013
Perivaldo Martins
procedure TForm4.ComboBox1Change(Sender: TObject); begin if (Combobox1.Text = 'Total de Membros') then begin Label1.Caption := 'Total de Membros Cadastrados'; AdoQuery1.Close; AdoQuery1.SQL.Clear; AdoQuery1.SQL.Add('Select * '); AdoQuery1.SQL.Add('From Dados '); AdoQuery1.SQL.Add('WHERE (STATUS <> "DESLIGADO") AND (STATUS <> "NÃO MEMBRO")); AdoQuery1.SQL.Add('Order by Nome'); AdoQuery1.Open; Label2.Caption := IntToStr(AdoQuery1.RecordCount); end;
Se é apenas para mostrar a quantidade de membros, digamos ativos, você pode tornar essa instrução mais rápida, modificando ela para:
procedure TForm4.ComboBox1Change(Sender: TObject); begin if (Combobox1.Text = 'Total de Membros') then begin Label1.Caption := 'Total de Membros Cadastrados'; AdoQuery1.Close; AdoQuery1.SQL.Clear; AdoQuery1.SQL.Add('Select COUNT(*) as Total '); AdoQuery1.SQL.Add('From Dados '); AdoQuery1.SQL.Add('WHERE (STATUS <> "DESLIGADO") AND (STATUS <> "NÃO MEMBRO")); AdoQuery1.Open; Label2.Caption := AdoQuery1.FieldByName('Total').AsString; end;
Boa sorte e bons códigos!
20/03/2013
Perivaldo Martins
AdoQuery1.SQL.Add('WHERE (STATUS <> "DESLIGADO") AND (STATUS <> "NÃO MEMBRO")');
Boa sorte e bons códigos!
22/03/2013
Bruno Leandro
De:
AdoQuery1.SQL.Add('WHERE (STATUS <> "DESLIGADO") AND (STATUS <> "NÃO MEMBRO"));
Para:
AdoQuery1.SQL.Add('WHERE (STATUS <> ''DESLIGADO'') AND (STATUS <> ''NÃO MEMBRO'')');
Clique aqui para fazer login e interagir na Comunidade :)