<!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>