[Lazarus-es] Error: Field "Nombre_Campo" has an invalid field type (BCD) to base index on.

Jesus Reyes A. jesusrmx en gmail.com
Mie Feb 22 21:04:15 CET 2017


On Wed, 22 Feb 2017 13:49:13 -0600, Ismael L. Donis Garcia via Lazarus-es  
<lazarus-es en lists.lazarus-ide.org> wrote:

> Estoy tratando de filtar un SQLQuery incluyendo un campo Decimal de  
> Firebird 2.5 y Lazarus me devuelve el siguiente error:
>
>> Field "Haber" has an invalid field type (BCD) to base index on.
>Si quito dicho campo no se produce el error.
>Como podré filtrar el SQLQuery con dichos tipos de campos "Decimales"?
> Esto es un error de Lazarus o del FPC?
> Es posible solventarlo de alguna forma?
>dm.rssc5.Filter:='((cuenta = ' +   
> dm.rssc1.FieldByName('cuenta').AsString + ') and (subcta = ''' +   
> dm.rssc1.FieldByName('subcta').AsString + ''') and (capitulo = ''' +   
> dm.rssc1.FieldByName>('capitulo').AsString + ''') and (subcap = ''' +   
> dm.rssc1.FieldByName('subcap').AsString + ''') and (elemento = '''') and  
> (empresa = ''' + stremp + ''') and (haber > 0))'
> Desde ya Gracias
> ========
> | ISMAEL |
> ========

Seguro es Haber>0 y no Haber.AsInteger ?

En caso de que este no sea el caso y Haber es una variable entera derivado  
de Haber.asInteger entonces es probable sea un problema de implementación  
en sqldb (o sea FPC).

Aún podrías filtrar el dataset usando el evento OnFilterRecord, cuando  
haces dataset.Filtered := true, se dispara el evento OnFilterRecord para  
cada uno de los registros, en este evento solo tienes que regresar accept  
:= true/false; y de esta manera el registro aparecerá o no como parte del  
dataset. En tu caso quizás se podría implementar de esta manera:

accept := (elemento = '''') and
           (empresa = ''' + stremp + ''') and
           (haber > 0) and
           (cuenta=dm.rssc1.FieldByName('cuenta').AsString) and
           (subcta = ''' +  dm.rssc1.FieldByName('subcta').AsString + ''')  
and
           (capitulo = ''' +  dm.rssc1.FieldByName('capitulo').AsString +  
''') and
           (subcap = ''' +  dm.rssc1.FieldByName('subcap').AsString + ''');

Jesus Reyes A.
 
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://lists.lazarus-ide.org/pipermail/lazarus-es/attachments/20170222/edd68d07/attachment.html>


Más información sobre la lista de distribución Lazarus-es