<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3c.org/TR/1999/REC-html401-19991224/loose.dtd">
<HTML><HEAD>
<META http-equiv=Content-Type content="text/html; charset=utf-8">
<META content="MSHTML 6.00.2900.5512" name=GENERATOR>
<STYLE></STYLE>
<STYLE
type=text/css>body { font-family:'DejaVu Sans Mono'; font-size:13px}</STYLE>
</HEAD>
<BODY bgColor=#ffffff>
<DIV><FONT face=Arial size=2>Muchas gracias Jesús pero casi estoy seguro que es
un problema del FPC.</FONT></DIV>
<DIV><FONT face=Arial size=2></FONT> </DIV>
<DIV><FONT face=Arial size=2>El campo haber no es entero ya que es un campo
donde se guarda el valor de los adeudos, por ese motivo es
monetario.</FONT></DIV>
<DIV><FONT face=Arial size=2>Filtro para ver si una persona ya a pagado algún
tipo específico de adeudo en el año.</FONT></DIV>
<DIV><FONT face=Arial size=2></FONT> </DIV>
<DIV><FONT face=Arial size=2>Analizando me di cuenta "o al menos pienso yo" que
es un problema del FPC ya que me puse a analizar el error y cambié la consulta y
me funcionó.</FONT></DIV>
<DIV> </DIV>
<DIV><FONT face=Arial size=2>Antes tenía la consulta. Campo Haber como Decimal,
así está por diseño en la BD.</FONT></DIV>
<DIV><FONT face=Arial size=2></FONT> </DIV>
<DIV><FONT face=Arial size=2>select ....., a.haber, ... from creditos a
....</FONT> </DIV>
<DIV><FONT face=Arial size=2></FONT> </DIV>
<DIV><FONT face=Arial size=2>De esta forma me da error al intentar filtrar el
SQLQuery. Entonces probé de la siguiente forma:</FONT></DIV>
<DIV><FONT face=Arial size=2></FONT> </DIV>
<DIV><FONT face=Arial size=2>
<DIV><FONT face=Arial size=2>select ....., cast(a.haber as double
precision) as haber, ... from creditos a ....</FONT> </DIV></FONT></DIV>
<DIV><FONT face=Arial size=2></FONT> </DIV>
<DIV><FONT face=Arial size=2>Y de esta forma el filtro me funciona
correctamente.</FONT></DIV>
<DIV><FONT face=Arial size=2></FONT> </DIV>
<DIV><FONT face=Arial size=2>Por ese motivo es que creo que es un problema de
tipos del FPC que no está definido los tipos de campos DECIMALES de
firebird</FONT></DIV>
<DIV><FONT face=Arial size=2></FONT> </DIV>
<DIV><FONT face=Arial size=2>No probé lo que me dijiste del filtro en el evento
OnFilterRecord ya que el filtro es dinámico, ósea cambia según los datos
devueltos por la consulta.</FONT></DIV>
<DIV><FONT face=Arial size=2></FONT> </DIV>
<DIV><FONT face=Arial size=2>Yo solo en la pregunta puse un caso específico de
filtro, pero de todos modos se podría probar a ver que pasa, pero estoy casi
seguro que va a fallar por el error:</FONT></DIV>
<DIV><FONT face=Arial size=2></FONT> </DIV>
<DIV><FONT face=Arial size=2>SErrIndexBasedOnInvField = 'Field "%s" has an
invalid field type (%s) to base index on.';</FONT></DIV>
<DIV><FONT face=Arial size=2></FONT> </DIV>
<DIV><FONT face=Arial size=2>de la unit dbconst</FONT></DIV>
<DIV><FONT face=Arial size=2></FONT> </DIV>
<DIV><FONT face=Arial size=2></FONT> </DIV>
<DIV><FONT face=Arial size=2>Saludos Cordiales</FONT></DIV>
<DIV><FONT size=2>========<BR>| ISMAEL |<BR>========</FONT></DIV>
<DIV>----- Original Message ----- </DIV>
<BLOCKQUOTE
style="PADDING-RIGHT: 0px; PADDING-LEFT: 5px; MARGIN-LEFT: 5px; BORDER-LEFT: #000000 2px solid; MARGIN-RIGHT: 0px">
<DIV
style="BACKGROUND: #e4e4e4; FONT: 10pt arial; font-color: black"><B>From:</B>
<A title=lazarus-es@lists.lazarus-ide.org
href="mailto:lazarus-es@lists.lazarus-ide.org">Jesus Reyes A. via
Lazarus-es</A> </DIV>
<DIV style="FONT: 10pt arial"><B>To:</B> <A
title=lazarus-es@lists.lazarus-ide.org
href="mailto:lazarus-es@lists.lazarus-ide.org">Spanish version of Lazarus
List</A> </DIV>
<DIV style="FONT: 10pt arial"><B>Cc:</B> <A title=jesusrmx@gmail.com
href="mailto:jesusrmx@gmail.com">Jesus Reyes A.</A> </DIV>
<DIV style="FONT: 10pt arial"><B>Sent:</B> Wednesday, February 22, 2017 3:04
PM</DIV>
<DIV style="FONT: 10pt arial"><B>Subject:</B> Re: [Lazarus-es] Error: Field
"Nombre_Campo" has an invalid field type (BCD) to base index on.</DIV>
<DIV><BR></DIV>On Wed, 22 Feb 2017 13:49:13 -0600, Ismael L. Donis Garcia via
Lazarus-es <<A
href="mailto:lazarus-es@lists.lazarus-ide.org">lazarus-es@lists.lazarus-ide.org</A>>
wrote:<BR><BR>
<BLOCKQUOTE
style="PADDING-LEFT: 1ex; MARGIN: 0px 0px 0.8ex; BORDER-LEFT: #0000ff 2px solid">
<DIV><FONT face=Arial size=2>Estoy tratando de filtar un SQLQuery incluyendo
un campo Decimal de Firebird 2.5 y Lazarus me devuelve el siguiente
error:</FONT></DIV>
<DIV> </DIV><FONT face=Arial size=2><FONT size=2>
<DIV>Field "Haber" has an invalid field type (BCD) to base index on.</DIV>
<DIV> </DIV>
<DIV>Si quito dicho campo no se produce el error.</DIV>
<DIV> </DIV>
<DIV>Como podré filtrar el SQLQuery con dichos tipos de campos
"Decimales"?</DIV>
<DIV>Esto es un error de Lazarus o del FPC?</DIV>
<DIV>Es posible solventarlo de alguna forma?</DIV>
<DIV> </DIV>
<DIV>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))'<BR></DIV>
<DIV>Desde ya Gracias</DIV></FONT></FONT>
<DIV><FONT size=2>========<BR>| ISMAEL |<BR>========</FONT></DIV></BLOCKQUOTE>
<DIV><BR></DIV>
<DIV>Seguro es Haber>0 y no Haber.AsInteger ?</DIV>
<DIV><BR></DIV>
<DIV>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). </DIV>
<DIV><BR></DIV>
<DIV>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:</DIV>
<DIV><BR></DIV>
<DIV>accept := (elemento = '''') and</DIV>
<DIV> (empresa = ''' + stremp + ''')
and</DIV>
<DIV> (haber > 0) and</DIV>
<DIV>
(cuenta=dm.rssc1.FieldByName('cuenta').AsString) and</DIV>
<DIV> (subcta = ''' +
dm.rssc1.FieldByName('subcta').AsString + ''') and</DIV>
<DIV> (capitulo = ''' +
dm.rssc1.FieldByName('capitulo').AsString + ''') and</DIV>
<DIV> (subcap = ''' +
dm.rssc1.FieldByName('subcap').AsString + ''');</DIV>
<DIV><BR></DIV>
<DIV>Jesus Reyes A.</DIV>
<DIV> </DIV>
<P>
<HR>
<P></P>_______________________________________________<BR>Lazarus-es mailing
list<BR>Lazarus-es@lists.lazarus-ide.org<BR>http://lists.lazarus-ide.org/listinfo/lazarus-es<BR></BLOCKQUOTE></BODY></HTML>