Delphi (como capturar o count(*) dentro de um campo chamado

11/01/2006

Ola Pessoal necessito de ajuda nisto:
Quero capturar o count(*) dentro de um campo chamado quantidade e
trabalhar com este campo quantidade fazendo um IF abaixo do sqlexec.
preciso trabalhar com o campo quantidade,e como definiar esta variavel
para comportar o count(*) ex:( eu nao sei se o count é integer ou double ).
Estou usando Delphi 4 x InterBase 6...
segue meu código abaixo para que vc possa analisar melhor....Obrigado pela força..

procedure TfrmPrincipal.importaMulPar; //MULTAS PARCELADAS
var F: TextFile;
S,placa,num_aut,cod_mul,tip_com,tip_aut,num_gui,dat_inf,val_mul,
dat_par,qtde_parc,val_par,val_tot,dat_pri_par,dat_ult_par,sit_cont: string;
quantidade: integer;
QCons:TZQuery;
// data_pg : String;
begin
AssignFile(F,´c:\arquivos\´+arquivo);
Reset(F);
QCons := TZQuery.Create(Nil);
QCons.Connection := db;
try
while not Eof(F) do begin
quantidade:=0;
Readln(F, S);
placa := copy(s,1,7);
num_aut := copy(s,8,10);
cod_mul := copy(s,18,4);
tip_com := copy(s,22,1);
tip_aut := copy(s,23,1);
num_gui := copy(s,24,11);
dat_inf := copy(s,35,8);
val_mul := copy(s,43,8);
dat_par := copy(s,51,8);
qtde_parc := copy(s,59,2);
val_par := copy(s,61,15);
val_tot := copy(s,76,8);
dat_pri_par := copy(s,84,8);
dat_ult_par := copy(s,92,8);
sit_cont := copy(s,100,17);
// data_pg := copy(dat_pag,1,4)+´/´+copy(dat_pag,5,2)+´/´+copy(dat_pag,7,2);
Qcons.Sql.Clear;
QCons.SQL.Add(´select count(*) as quantidade from AGE_MULTAS_PARCELADAS,´);
QCons.SQL.Add(´where MPAR_NR_AUTO = ´+´´´´+num_aut+´´´´+´AND MPAR_COD_MULTA =´+´´´´+cod_mul+´´´´+´,´);
QCons.SQL.Add(´AND MPAR_DT_ULT_PARC>dat_ult_par AND MPAR_DT_PARCELAMENTO>dat_par´);
Qcons.ExecSQL;
IF QCONS.FIELDBYNAME(´quantidade´).ASINTEGER = 0 THEN
ELSE
// if quantidade>0 then
//messagedlg(´rejeitado´+´ ´+num_aut+´ ´+cod_mul,mtwarning,[mBOK],0)
// else
begin
//messagedlg(´inserido´+´ ´+num_aut+´ ´+cod_mul,mtwarning,[mBOK],0);
QCons.SQL.Add(´delete AGE_MULTAS_PARCELADAS where MPAR_NR_AUTO =´+´´´´+num_aut+´´´´+´AND MPAR_COD_MULTA =´+´´´´+cod_mul+´´´´+´,´);
Qcons.ExecSQL;
Qcons.Sql.Clear;
QCons.sql.Add(´insert into AGE_MULTAS_PARCELADAS (MPAR_PLACA,MPAR_NR_AUTO,´);
QCons.sql.Add(´MPAR_COD_MULTA,MPAR_TIPO_COMP,MPAR_NR_GUIA,MPAR_DT_INFRACAO,MPAR_VLR_MULTA,MPAR_DT_PARCELAMENTO,´);
QCons.sql.Add(´MPAR_QTDE_PARC,MPAR_VLR_PARCELA,MPAR_VLR_TOTAL,MPAR_DT_PRIM_PARC,MPAR_DT_ULT_PARC,MPAR_SIT_CONTRATO)´);
QCons.sql.Add(´VALUES (´ +´´´´+placa+´´´,´);
QCons.sql.Add(´ +´´´+num_aut+´´´,´´´+cod_mul+´´´,´);
QCons.sql.Add(´ +´´´+tip_com+´´´,´´´+tip_aut+´´´,´´´+num_gui+´´´,´);
QCons.sql.Add(´ +´´´+copy(dat_inf,1,4)+´/´+copy(dat_inf,5,2)+´/´+copy(dat_inf,7,2)+´´´,´);
QCons.sql.Add(´ +´´´+val_mul+´´´/100,´);
QCons.sql.Add(´ +´´´+copy(dat_par,1,4)+´/´+copy(dat_par,5,2)+´/´+copy(dat_par,7,2)+´´´,´);
QCons.sql.Add(´ +´´´+qtde_parc+´´´,´);
QCons.sql.Add(´ +´´´+val_par+´´´,´);
QCons.sql.Add(´ +´´´+val_tot+´´´/100,´);
QCons.sql.Add(´ +´´´+copy(dat_pri_par,1,4)+´/´+copy(dat_pri_par,5,2)+´/´+copy(dat_pri_par,7,2)+´´´,´);
QCons.sql.Add(´ +´´´+copy(dat_ult_par,1,4)+´/´+copy(dat_ult_par,5,2)+´/´+copy(dat_ult_par,7,2)+´´´,´);
QCons.sql.Add(´ +´´´+sit_cont+´´´,´);
Qcons.ExecSQL;
Qcons.Sql.Clear;
//Qcons.Sql.Clear;
//QCons.SQL.Add(´commit´);
//Qcons.ExecSQL;
// messagedlg(frmPrincipal.arquivo+´ ´+placa,mtwarning,[mBOK],0);
end;
end;
CloseFile(F);
except
Qcons.free;
end;
Qcons.free;

end;


Edsonf

Respostas

11/01/2006

Aerreira

Acho que Fields[0].AsInteger retorna o valor do count.

Mas o erro deve ser:

IF QCONS.FIELDBYNAME(´quantidade´).ASINTEGER = 0 THEN
ELSE
// if [b:1f3c7b86e8]quantidade[/b:1f3c7b86e8]>0 then


O correto não seria:

IF QCONS.FIELDBYNAME(´quantidade´).ASINTEGER = 0 THEN
ELSE
// if [b:1f3c7b86e8]QCONS.FIELDBYNAME(´quantidade´).ASINTEGER[/b:1f3c7b86e8] > 0 then


Responder Citar

25/01/2006

Edsonf

Amigão aerreira

Exatamente agora testei e ficou desta forma mesmo Obrigado pela dica.

segue código correto:

[b:09c89b642f]if Qcons.fields[0].asinteger = 0 then[/b:09c89b642f]


Responder Citar