Greetings

Since yesterday i've got a "weird" error

 i have a cursor and after i open it, i try to check record count and i get the 
following error
 "attempt to fetch past the last record in a record stream."
 i've managed to overcome by validating when eof or 
QProducoesActivas.CursorRowNum > 0
 

 this has appened since Firebird changed from 2.1 on Windows to 2.5 on Linux, 
what can it be?
 

 

 cursor declaration and validation
 

  QProducoesActivas := TIB_Cursor.Create(nil);
   QProducoesActivas.IB_Connection := DMGeral.BaseDados;
   QProducoesActivas.IB_Transaction := DMGeral.TransacaoLeitura;
   QProducoesActivas.close;
  
    QProducoesActivas.Sql.Clear;
   QproducoesActivas.SQL.Add('SELECT  (select c.quant_feita ');
   QproducoesActivas.SQL.Add('FROM cpa_necessidades_Producao c ');
   QproducoesActivas.SQL.Add('WHERE c.serie=h.serie   AND 
h.ano_plano=c.ano_plano AND h.cod_Plano=c.cod_plano ');
   QproducoesActivas.SQL.Add('AND h.codigo_arm=c.codigo_arm AND 
h.Referencia=c.Referencia AND h.linha=c.n_linha AND 
h.cod_operacao=c.cod_operacao ');
   QproducoesActivas.SQL.Add('AND h.ordemprod = c.ordemprod  ');
   QproducoesActivas.SQL.Add(')  AS QTDProd , sum(h.tempo_util) AS TotHoras, 
floor( sum(h.quantidade)/sum(h.tempo_util)) AS Cadencia_Real');
   QProducoesActivas.SQL.Add('FROM cpa_hist_operacoes h');
   QProducoesActivas.Sql.Add('WHERE h.serie=:serie AND h.ano_plano=:ano_plano 
AND h.cod_Plano=:cod_plano AND h.num_viatura=:num_viatura ');
   QProducoesActivas.Sql.Add('AND h.codigo_arm=:codigo_arm AND 
h.Referencia=:Referencia AND h.linha=:n_linha AND 
h.cod_operacao=:cod_operacao');
   QProducoesActivas.Sql.Add('AND h.ordemprod = :ordemprod ');
   QProducoesActivas.SQL.Add('GROUP BY h.serie, h.ano_plano, h.num_viatura, 
h.cod_plano, h.codigo_arm, h.referencia, h.cod_operacao, h.ordemprod, h.linha 
');
   QProducoesActivas.Open();
 ...
 

  QProducoesActivas.ParamByName('serie').AsString := 
MemLinhasPlaneamento.FieldByName('serie').AsString;
         QProducoesActivas.ParamByName('ano_plano').AsString := 
MemLinhasPlaneamento.FieldByName('ano_plano').AsString;
         QProducoesActivas.ParamByName('cod_Plano').AsString := 
MemLinhasPlaneamento.FieldByName('cod_Plano').AsString;
         QProducoesActivas.ParamByName('codigo_arm').AsString := 
MemLinhasPlaneamento.FieldByName('codigo_arm').AsString;
         QProducoesActivas.ParamByName('Referencia').AsString := 
MemLinhasPlaneamento.FieldByName('Referencia').AsString;
         QProducoesActivas.ParamByName('n_linha').AsString := 
MemLinhasPlaneamento.FieldByName('n_linha').AsString;
         QProducoesActivas.ParamByName('cod_operacao').AsString := 
MemLinhasPlaneamento.FieldByName('cod_operacao').AsString;
         QProducoesActivas.ParamByName('ordemprod').AsString := 
MemLinhasPlaneamento.FieldByName('ordemprod').AsString;
         QProducoesActivas.ParamByName('num_viatura').AsString := 
MemLinhasPlaneamento.FieldByName('maquina').AsString;
  
         QProducoesActivas.RefreshKeys();
         
          if( QProducoesActivas.recordcount > 0 ) ....

  

Reply via email to