uso da instrução SUM ou COUNT no paradox

Delphi

02/06/2013

Amigos,

O banco de dados é Paradox. Tenho um relatorio onde existem os campos SITIGREJA (ativo ou inativo) e o campo SC06 (com as informações A (ausente) ou P(presente).
Ao final do relatorio, preciso saber quantos membros estão Ativos, quantos Ausentes e quantos Presentes.

Escrevi o seguinte codigo:

procedure TFrm_Rel_Freq_Sta_Ceia.SummaryBand1BeforePrint(
Sender: TQRCustomBand; var PrintBand: Boolean);
var
vApto, vPresente, vAusente : integer;
begin
vApto := 0;
Dtm_Secre.qMembros_O.Close;
Dtm_Secre.qMembros_O.Sql.Clear;
Dtm_Secre.qMembros_O.Sql.Add('Select count(sitigreja) as vApto, controle from MEMBROS where SITIGREJA = "ATIVO"');
Dtm_Secre.qMembros_O.ExecSql;
Dtm_Secre.qMembros_O.Open;

vPresente := 0;
Dtm_Secre.qMembros_O.Close;
Dtm_Secre.qMembros_O.Sql.Clear;
Dtm_Secre.qMembros_O.Sql.Add('Select count(sitigreja) as vPresent, controle from MEMBROS where SITIGREJA = "ATIVO" and Sc06 = "P"');
Dtm_Secre.qMembros_O.ExecSql;
Dtm_Secre.qMembros_O.Open;

vAusente := 0;
Dtm_Secre.qMembros_O.Close;
Dtm_Secre.qMembros_O.Sql.Clear;
Dtm_Secre.qMembros_O.Sql.Add('Select count(sitigreja) as vAusente, controle from MEMBROS where SITIGREJA = "ATIVO" and Sc06 = "P"');
Dtm_Secre.qMembros_O.ExecSql;
Dtm_Secre.qMembros_O.Open;

QrLabel21.Caption := InttoStr(vApto);
QrLabel22.Caption := InttoStr(vPresente);
QrLabel23.Caption := InttoStr(vAusente);
end;

não esta funcionando. Podem me orientar? (é delphi)


Gilberto Moreira

Gilberto Moreira

Curtidas 0

Respostas

Michael Sampaio

Michael Sampaio

02/06/2013

Fala rapaz,
Então faltou somente o seguinte vc anexar valor as variaveis declaradas segue o
codigo corrigido espero que funcione abraços
procedure TFrm_Rel_Freq_Sta_Ceia.SummaryBand1BeforePrint(
Sender: TQRCustomBand; var PrintBand: Boolean);
var
vApto, vPresente, vAusente : integer;
begin
vApto := 0;
Dtm_Secre.qMembros_O.Close;
Dtm_Secre.qMembros_O.Sql.Clear;
Dtm_Secre.qMembros_O.Sql.Add('Select count(sitigreja) as vApto, controle from MEMBROS where SITIGREJA = "ATIVO"');
Dtm_Secre.qMembros_O.ExecSql;
Dtm_Secre.qMembros_O.Open;

//Aqui Modifiquei
vapto:=Dtm_Secre.qMembros_O.FieldByName('vapto').AsInteger ;

vPresente := 0;
Dtm_Secre.qMembros_O.Close;
Dtm_Secre.qMembros_O.Sql.Clear;
Dtm_Secre.qMembros_O.Sql.Add('Select count(sitigreja) as vPresent, controle from MEMBROS where SITIGREJA = "ATIVO" and Sc06 = "P"');
Dtm_Secre.qMembros_O.ExecSql;
Dtm_Secre.qMembros_O.Open;

//Aqui modifiquei
vpresente:=Dtm_Secre.qMembros_O.FieldByName('vpresente').AsInteger ;

vAusente := 0;
Dtm_Secre.qMembros_O.Close;
Dtm_Secre.qMembros_O.Sql.Clear;
Dtm_Secre.qMembros_O.Sql.Add('Select count(sitigreja) as vAusente, controle from MEMBROS where SITIGREJA = "ATIVO" and Sc06 = "P"');
Dtm_Secre.qMembros_O.ExecSql;
Dtm_Secre.qMembros_O.Open;

//Aqui modifiquei
vausente:=Dtm_Secre.qMembros_O.FieldByName('vausente').AsInteger ;

QrLabel21.Caption := InttoStr(vApto);
QrLabel22.Caption := InttoStr(vPresente);
QrLabel23.Caption := InttoStr(vAusente);
end;

GOSTEI 0
Gilberto Moreira

Gilberto Moreira

02/06/2013

Amigo, infelismente não funcionou. As variaveis vApto, vPresente e vAusente NÃO pertencem à tabela. deu o seguinte erro
QMEMBRO_O: FIELD 'VAPTO' NOT FOUND.
GOSTEI 0
Michael Sampaio

Michael Sampaio

02/06/2013

Então realizei tal procedimento antes o mandar aqui funcionou perfeitamente,
se quiser posso te mandar para que possa verificar qualquer coisa,
mas assim:
Para que o Execsql ??? ja que e um select nao vejo a necessidade do mesmo.
Qual versão do delphi?
E seu email para que possa estar lhe mandando o teste que realizei.
Testa sem o Execsql para ver no que que da ate mais abraços ...
GOSTEI 0
Michael Sampaio

Michael Sampaio

02/06/2013

Então realizei tal procedimento antes o mandar aqui funcionou perfeitamente,
se quiser posso te mandar para que possa verificar qualquer coisa,
mas assim:
Para que o Execsql ??? ja que e um select nao vejo a necessidade do mesmo.
Qual versão do delphi?
E seu email para que possa estar lhe mandando o teste que realizei.
Testa sem o Execsql para ver no que que da ate mais abraços ...


Somente anexando entendo que os mesmos não sao campos da tabela mas ao
vc indicar o "as vApto" eles passam a ser uma coluna temporaria para essa
query podendo assim utilizar para tal exibção
GOSTEI 0
POSTAR