consulta sql com recordcount

15/02/2013

1

De: Francisco de Assis Nicolau

Estou tentando fazer com que uma consulta sql me retorne valores e não esta funcionando. Gostaria de obter ajuda. Abaixo posto parte do código que criei e não está funcionando:

procedure Tfrm_natOcorrencias.FormShow(Sender: TObject);
var
sql: String;
begin
sql := SELECT * FROM relatorio_ocorrencia;
ZQ_ContaAuxilio.Close;
ZQ_ContaAuxilio.SQL.Clear;
ZQ_ContaAuxilio.SQL.Add(sql);
ZQ_ContaAuxilio.Open;
lbl_TotaGeral_auxilio.Caption := inttostr(ZQ_ContaAuxilio.RecordCount);

sql := SELECT COUNT(nat_ocorr) AS NatOcorr FROM relatorio_ocorrencia WHERE nat_ocorr=A-01 Auxilio ao Público /Diversos / Socorro;
ZQ_ContaAuxilio.Close;
ZQ_ContaAuxilio.SQL.Clear;
ZQ_ContaAuxilio.SQL.Add(sql);
ZQ_ContaAuxilio.Open;
lbl_total_A01.Caption := inttostr(ZQ_ContaAuxilio.FieldByName(NatOcorr).AsInteger);

sql := SELECT COUNT(nat_ocorr) AS NatOcorr FROM relatorio_ocorrencia WHERE nat_ocorr=A-02 Criança Desassistida / Abandono de Incapaz;
ZQ_ContaAuxilio.Close;
ZQ_ContaAuxilio.SQL.Clear;
ZQ_ContaAuxilio.SQL.Add(sql);
ZQ_ContaAuxilio.Open;
lbl_total_A02.Caption := inttostr(ZQ_ContaAuxilio.FieldByName(NatOcorr).AsInteger);

sql := SELECT COUNT(nat_ocorr) AS NatOcorr FROM relatorio_ocorrencia WHERE nat_ocorr=A-03 Distúrbio Mental / Demente;
ZQ_ContaAuxilio.Close;
ZQ_ContaAuxilio.SQL.Clear;
ZQ_ContaAuxilio.SQL.Add(sql);
ZQ_ContaAuxilio.Open;
lbl_total_A03.Caption := inttostr(ZQ_ContaAuxilio.FieldByName(NatOcorr).AsInteger);

sql := SELECT COUNT(nat_ocorr) AS NatOcorr FROM relatorio_ocorrencia WHERE nat_ocorr=A-04 Embriaguez;
ZQ_ContaAuxilio.Close;
ZQ_ContaAuxilio.SQL.Clear;
ZQ_ContaAuxilio.SQL.Add(sql);
ZQ_ContaAuxilio.Open;
lbl_total_A04.Caption := inttostr(ZQ_ContaAuxilio.FieldByName(NatOcorr).AsInteger);

sql := SELECT COUNT(nat_ocorr) AS NatOcorr FROM relatorio_ocorrencia WHERE nat_ocorr=A-05 Parturiente / Parto;
ZQ_ContaAuxilio.Close;
ZQ_ContaAuxilio.SQL.Clear;
ZQ_ContaAuxilio.SQL.Add(sql);
ZQ_ContaAuxilio.Open;
lbl_total_A05.Caption := inttostr(ZQ_ContaAuxilio.FieldByName(NatOcorr).AsInteger);

sql := SELECT COUNT(nat_ocorr) AS NatOcorr FROM relatorio_ocorrencia WHERE nat_ocorr=A-06 Acidente Pessoal;
ZQ_ContaAuxilio.Close;
ZQ_ContaAuxilio.SQL.Clear;
ZQ_ContaAuxilio.SQL.Add(sql);
ZQ_ContaAuxilio.Open;
lbl_total_A06.Caption := inttostr(ZQ_ContaAuxilio.FieldByName(NatOcorr).AsInteger);

sql := SELECT COUNT(nat_ocorr) AS NatOcorr FROM relatorio_ocorrencia WHERE nat_ocorr=A-07 Auxilio Funeral;
ZQ_ContaAuxilio.Close;
ZQ_ContaAuxilio.SQL.Clear;
ZQ_ContaAuxilio.SQL.Add(sql);
ZQ_ContaAuxilio.Open;
lbl_total_A07.Caption := inttostr(ZQ_ContaAuxilio.FieldByName(NatOcorr).AsInteger);

sql := SELECT COUNT(nat_ocorr) AS NatOcorr FROM relatorio_ocorrencia WHERE nat_ocorr=A-08 Auxilio ao Trânsito;
ZQ_ContaAuxilio.Close;
ZQ_ContaAuxilio.SQL.Clear;
ZQ_ContaAuxilio.SQL.Add(sql);
ZQ_ContaAuxilio.Open;
lbl_total_A08.Caption := inttostr(ZQ_ContaAuxilio.FieldByName(NatOcorr).AsInteger);

sql := SELECT COUNT(nat_ocorr) AS NatOcorr FROM relatorio_ocorrencia WHERE nat_ocorr=A-09 Passgem escolar;
ZQ_ContaAuxilio.Close;
ZQ_ContaAuxilio.SQL.Clear;
ZQ_ContaAuxilio.SQL.Add(sql);
ZQ_ContaAuxilio.Open;
lbl_total_A09.Caption := inttostr(ZQ_ContaAuxilio.FieldByName(NatOcorr).AsInteger);
Responder

Posts

15/02/2013

Douglas

Francisco,

nos "SELECT" demonstrado acima.

Algum deles retorna um suposto valor,

ou todos ficam sem valores mesmo ?
Responder
Francisco,

nos "SELECT" demonstrado acima.

Algum deles retorna um suposto valor,

ou todos ficam sem valores mesmo ?


É isso aí Douglas, acho que está meio estranho esse código do colega, se ele puder nos informar o que está acontecendo, se está dando erro, qual o resultado que está sendo apresentado, poderiamos ter uma idéia de como ajudá-lo.

Esse código vai exibir o resultado da consulta em um grid, vários grids, conforme seleção, pq o código está no OnShow fo form não é isso?

procedure Tfrm_natOcorrencias.FormShow(Sender: TObject);
var
sql: String;
begin
sql := SELECT * FROM relatorio_ocorrencia;
ZQ_ContaAuxilio.Close;
ZQ_ContaAuxilio.SQL.Clear;
ZQ_ContaAuxilio.SQL.Add(sql);
ZQ_ContaAuxilio.Open;
lbl_TotaGeral_auxilio.Caption := inttostr(ZQ_ContaAuxilio.RecordCount);

sql := SELECT COUNT(nat_ocorr) AS NatOcorr FROM relatorio_ocorrencia WHERE nat_ocorr=A-01 Auxilio ao Público /Diversos / Socorro;
ZQ_ContaAuxilio.Close;
ZQ_ContaAuxilio.SQL.Clear;
ZQ_ContaAuxilio.SQL.Add(sql);
ZQ_ContaAuxilio.Open;
lbl_total_A01.Caption := inttostr(ZQ_ContaAuxilio.FieldByName(NatOcorr).AsInteger); 


Vendo aqui com mais calma, percebo que vc quer exibir a quantidade de registros em alguns Label's, correto? Esse ZQ_ContaAuxilio é um componente de que tipo TQuery, TSQLQuery, ou o quê?

Boa sorte e bons códigos!
Responder

16/02/2013

Douglas

Bom Francisco,

já que na forma que você esta fazendo não esta funcionando.

faça desta forma abaixo para cada um deles:

procedure Tfrm_natOcorrencias.FormShow(Sender: TObject);
var
 I : integer;
begin
I := 0;
ZQ_ContaAuxilio.Close;
ZQ_ContaAuxilio.SQL.Clear;
ZQ_ContaAuxilio.SQL.Add('SELECT * FROM relatorio_ocorrencia');
ZQ_ContaAuxilio.Open;

ZQ_ContaAuxilio.First;

while not ZQ_ContaAuxilio.Eof do
begin
inc(I);
ZQ_ContaAuxilio.Next;
end;

lbl_TotaGeral_auxilio.Caption := inttostr(I);


E assim sucessivamente para os outros, não esqueça de sempre zerar a variável "I".

Obs: Já tive problemas com RecordCount, dele bugar na hora de obter uma massa de quantidade de registro.

Responder

16/02/2013

Douglas

Francisco,

nos "SELECT" demonstrado acima.

Algum deles retorna um suposto valor,

ou todos ficam sem valores mesmo ?


É isso aí Douglas, acho que está meio estranho esse código do colega, se ele puder nos informar o que está acontecendo, se está dando erro, qual o resultado que está sendo apresentado, poderiamos ter uma idéia de como ajudá-lo.

Esse código vai exibir o resultado da consulta em um grid, vários grids, conforme seleção, pq o código está no OnShow fo form não é isso?

procedure Tfrm_natOcorrencias.FormShow(Sender: TObject);
var
sql: String;
begin
sql := SELECT * FROM relatorio_ocorrencia;
ZQ_ContaAuxilio.Close;
ZQ_ContaAuxilio.SQL.Clear;
ZQ_ContaAuxilio.SQL.Add(sql);
ZQ_ContaAuxilio.Open;
lbl_TotaGeral_auxilio.Caption := inttostr(ZQ_ContaAuxilio.RecordCount);

sql := SELECT COUNT(nat_ocorr) AS NatOcorr FROM relatorio_ocorrencia WHERE nat_ocorr=A-01 Auxilio ao Público /Diversos / Socorro;
ZQ_ContaAuxilio.Close;
ZQ_ContaAuxilio.SQL.Clear;
ZQ_ContaAuxilio.SQL.Add(sql);
ZQ_ContaAuxilio.Open;
lbl_total_A01.Caption := inttostr(ZQ_ContaAuxilio.FieldByName(NatOcorr).AsInteger); 


Vendo aqui com mais calma, percebo que vc quer exibir a quantidade de registros em alguns Label's, correto? Esse ZQ_ContaAuxilio é um componente de que tipo TQuery, TSQLQuery, ou o quê?

Boa sorte e bons códigos!


Realmente, Martins.

Mas como comentei anteriormente já tive problemas com o "RecordCount",

ao trazer uma grande quantidade de registros, a melhor forma de resolver

foi como citei acima. Porém vamos esperar o FeedBack do nosso amigo.

Responder