RE: [firebase-br] Consulta está derrubando o serviço
Ivan Guimarães Meirelles
igmeirelles em gmail.com
Sex Jan 26 08:13:56 -03 2007
Olá Carlos... me envia apenas o arquivo FDB, não precisa me mandar o código
fonte...
O meu e-mail é: meirelles.suporte em gmail.com
Um abraço...
-----Original Message-----
From: lista-bounces em firebase.com.br [mailto:lista-bounces em firebase.com.br]
On Behalf Of Suporte Sinapse Informática
Sent: quinta-feira, 25 de janeiro de 2007 19:20
To: FireBase
Subject: Re: [firebase-br] Consulta está derrubando o serviço
Olá Ivan,
Segue abaixo o método que dá o erro. O erro ocorre extamente quando execute
a instrução CdsSaldoVolanteAnt.Open. Detalhe o erro não ocorre quando a
rotina está processando 3000º equipe. Como são 5570 não consegui terminar.
O cdsSaldoVolante executa o seguinte código SQL SELECT
A.REQUIPE as EQUIPE,
A.RCODMAT as CODMAT,
B.CLASSIFICACAO,
SUM(A.RTOTENT) as TOTENT,
SUM(A.RTOTSAI) as TOTSAI,
SUM(A.RTOTAPLIC) as TOTAPLIC,
SUM(A.RTOTREMOV) as TOTREMOV,
SUM(A.RSALDO) as SALDO FROM
SP_EQUIPE_GASTO_APLICADO_DATA(:pTIPOSALDO,:pCODCT,:pPROJETO,:pEQUIPE,:pDATA_
LIMITE,'-','-') A Inner Join TB_MATERIAL B On (B.CODMAT=A.rCODMAT) Where
(NOT A.RCODMAT Is Null and A.RCODMAT<>'') GROUP BY
A.REQUIPE,A.RCODMAT,B.CLASSIFICACAO,
Se não estiver dando para entender muito bem, eu posso te mandar o código
fonte em PVT. O programa é pequeno. Não há problema nenhum em te mandar.
Eu agradeço pela atenção que estás me dando.
At.
Carlos Henrique Meireles
Rotina que dá o erro é esse aqui.
____________________________________________________________________________
_____________________________
procedure TDmMontaRelat.ProcessarSaldoVolanteAnt(CodCt, Projeto, Equipe,
TipoSaldoAplic : String); begin
If Empty(Projeto) Then
Projeto:='-';
FrmindicaProgresso.Stacao.Caption:='Calculando o saldo volante anterior do
contrato: '+
Codct+' | Projeto: '+Projeto+' | Equipe: '+Equipe;
(***************************************************************************
**)
CdsSaldoVolanteAnt.Close;
With QrySaldoVolanteAnt Do
Begin
ParamByName('pTIPOSALDO').AsString:=TipoSaldoAplic;
ParamByName('pCODCT').AsString:=Codct;
ParamByName('pPROJETO').AsString:=Projeto;
ParamByName('pEQUIPE').AsString:=Equipe;
ParamByName('pDATA_LIMITE').AsDate:=StrToDate('02/01/2007');
End;
CdsSaldoVolanteAnt.Open;// É essa linha que dá o erro.
(**************************************************************************)
Total_Registros:=CdsSaldoVolanteAnt.RecordCount;
Registro_Atual:=0;
(**************************************************************************)
While Not CdsSaldoVolanteAnt.Eof Do
Begin
If Not CdsSaldoVolante.Locate('CODCT;PROJETO;CODMAT',
VarArrayOf([Codct,Projeto,CdsSaldoVolanteAnt.FieldByName('CODMAT').AsString]
),[]) Then
Begin
CdsSaldoVolante.Insert;
CdsSaldoVolanteCODCT.Value:=Codct;
CdsSaldoVolantePROJETO.Value:=Projeto;
CdsSaldoVolanteEQUIPE.Value:=Equipe;
CdsSaldoVolanteCODMAT.Value:=CdsSaldoVolanteAnt.FieldByName('CODMAT').AsStri
ng;
End
Else
CdsSaldoVolante.Edit;
CdsSaldoVolanteENT_VOL_ANT.Value:=CdsSaldoVolanteAnt.FieldByName('TOTENT').A
sFloat;
CdsSaldoVolanteSAI_VOL_ANT.Value:=CdsSaldoVolanteAnt.FieldByName('TOTSAI').A
sFloat;
CdsSaldoVolanteAPL_VOL_ANT.Value:=CdsSaldoVolanteAnt.FieldByName('TOTAPLIC')
.AsFloat;
CdsSaldoVolanteREM_VOL_ANT.Value:=CdsSaldoVolanteAnt.FieldByName('TOTREMOV')
.AsFloat;
If CdsSaldoVolanteAnt.FieldByName('CLASSIFICACAO').AsString<>'R' Then
CdsSaldoVolanteSALDO_VOL_ANT.Value:=CdsSaldoVolanteAnt.FieldByName('SALDO').
AsFloat
Else
CdsSaldoVolanteSALDO_VOL_ANT.Value:=CdsSaldoVolanteAnt.FieldByName('TOTREMOV
').AsFloat-
CdsSaldoVolanteAnt.FieldByName('TOTSAI').AsFloat;
CdsSaldoVolante.Post;
CdsSaldoVolanteAnt.Next;
Inc(Registro_Atual);
End;
FrmindicaProgresso.Stacao.Caption:='Gravando o saldo volante anterior do
contrato: '+
Codct+' | Projeto: '+Projeto+' | Equipe: '+Equipe+' |
'+IntToStr(Registro_Atual)+' / '+IntToStr(Total_Registros);
FrmindicaProgresso.Update;
end;
Procedure
____________________________________________________________________________
_____________________________
CREATE PROCEDURE SP_EQUIPE_GASTO_APLICADO_DATA(
TIPOSALDO VARCHAR(10),
CODCT VARCHAR(4),
PROJETO VARCHAR(20),
EQUIPE VARCHAR(10),
DATA_LIMITE DATE,
CODMAT VARCHAR(12),
CODCPL VARCHAR(12))
RETURNS (
REQUIPE VARCHAR(10),
RCODMAT VARCHAR(12),
RCODCPL VARCHAR(12),
RTOTENT NUMERIC(9,2),
RTOTSAI NUMERIC(9,2),
RTOTAPLIC NUMERIC(9,2),
RTOTREMOV NUMERIC(9,2))
AS
begin
If (CODMAT='' or CODMAT='-') Then
Begin
CODMAT=Null;
End
If (CODCPL='' or CODCPL='-') Then
Begin
CODCPL=Null;
End
For Select EQUIPE, CODMAT, CODCPL, SUM(SAIDA) as TOTENT, SUM(ENTRADA) as
TOTSAI From TB_ESTOQUE
Where CODCT=:CODCT and EQUIPE=:EQUIPE and DATA<=:DATA_LIMITE
Group By EQUIPE, CODMAT, CODCPL
Into :rEQUIPE, :rCODMAT, :rCODCPL, :rTOTENT, :rTOTSAI
Do
Begin
rTOTAPLIC=0;
rTOTREMOV=0;
Suspend;
End
For Select EQUIPE, CODMAT, CODCPL, SUM(QUANTIDADE) as TOTAPLIC,
SUM(QUANT_REMOV) as TOTREMOV From TB_MATERIAL_TAREFA
Where CODCT=:CODCT and EQUIPE=:EQUIPE and DATA_APLIC<=:DATA_LIMITE
Group By EQUIPE, CODMAT, CODCPL
Into :rEQUIPE, :rCODMAT, :rCODCPL, :rTOTAPLIC, :rTOTREMOV
Do
Begin
rTOTENT=0;
rTOTSAI=0;
Suspend;
End
End
______________________________________________
FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br Para
editar sua configuração na lista, use o endereço
http://mail.firebase.com.br/mailman/listinfo/lista_firebase.com.br
Para consultar mensagens antigas: http://firebase.com.br/pesquisa
Mais detalhes sobre a lista de discussão lista