Subject | Error when trying recordcount > 0 |
---|---|
Author | |
Post date | 2018-04-12T08:14:40Z |
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 ) ....