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