Fórum uso da instrução SUM ou COUNT no paradox #444529
02/06/2013
0
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
Curtir tópico
+ 0Posts
02/06/2013
Michael Sampaio
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
03/06/2013
Gilberto Moreira
QMEMBRO_O: FIELD 'VAPTO' NOT FOUND.
Gostei + 0
03/06/2013
Michael Sampaio
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
03/06/2013
Michael Sampaio
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
Clique aqui para fazer login e interagir na Comunidade :)