<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META http-equiv=Content-Type content="text/html; charset=utf-8">
<META content="MSHTML 6.00.2900.5512" name=GENERATOR>
<STYLE></STYLE>
</HEAD>
<BODY bgColor=#ffffff>
<DIV><FONT face=Arial size=2>No ese no es el problema la consulta la obtengo 
vacia y el error me ocurre cuando voy llenando la consulta.</FONT></DIV>
<DIV><FONT face=Arial size=2></FONT> </DIV>
<DIV><FONT face=Arial size=2>La consulta la he tenido que dajar de la siguiente 
forma (original):</FONT></DIV>
<DIV><FONT face=Arial size=2></FONT> </DIV>
<DIV><FONT face=Arial size=2>strsql := 'select s.entidad, s.reg, s.numc, 
s.fecha, s.cuenta, s.subcta, s.capitulo, s.subcap, s.elemento, s.empresa, 
cast(s.debe as double precision) as debe, cast(s.haber as double precision) as 
haber, s.nota, s.clave, s.sctaor, s.eleor, s.empor from scsal s where (s.idsa is 
null)';</FONT></DIV>
<DIV><FONT face=Arial size=2></FONT> </DIV>
<DIV><FONT face=Arial size=2>Si la consulta la dejo como sigue me da error al 
hacer el filtro:</FONT></DIV>
<DIV><FONT face=Arial size=2>
<DIV><FONT face=Arial size=2>strsql := 'select s.entidad, s.reg, s.numc, 
s.fecha, s.cuenta, s.subcta, s.capitulo, s.subcap, s.elemento, s.empresa, 
s.debe, s.haber, s.nota, s.clave, s.sctaor, s.eleor, s.empor from scsal s where 
(s.idsa is null)';</FONT></DIV>
<DIV> </DIV></FONT></DIV>
<DIV><FONT face=Arial size=2>Pongo la llave primaria idsa = null para no obtener 
ningun registro.</FONT></DIV>
<DIV><FONT face=Arial size=2></FONT> </DIV>
<DIV><FONT face=Arial size=2>Después a la hora de actualizar era cuando me daba 
el error. Por ese motivo es que no puedo usar where, ósea porque la colsulta 
solo me da la estructura de los campos</FONT></DIV>
<DIV><FONT face=Arial size=2></FONT> </DIV>
<DIV><FONT face=Arial size=2>        if 
dm.rssc6.RecordCount > 0 then 
begin<BR>          if 
((dm.rssc1.FieldByName('elemento').AsInteger = 0) and 
(dm.rssc1.FieldByName('empresa').AsInteger = 0)) 
then<BR>            
dm.rssc6.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 = '''') and (haber > 
0))'<BR>          else if 
((dm.rssc1.FieldByName('elemento').AsInteger = 0) and 
(dm.rssc1.FieldByName('empresa').AsInteger <> 0)) 
then<BR>            
dm.rssc6.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>          else if 
((dm.rssc1.FieldByName('elemento').AsInteger <> 0) and 
(dm.rssc1.FieldByName('empresa').AsInteger = 0)) 
then<BR>            
dm.rssc6.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 = ''' + strele + ''') and (empresa = '''') and (haber > 
0))'<BR>          
else<BR>            
dm.rssc6.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 = ''' + strele + ''') and (empresa = ''' + stremp + ''') and (haber 
> 0))';<BR>          
dm.rssc6.Filtered:=true;<BR>          
if dm.rssc6.EOF 
then<BR>            
dm.rssc6.Append<BR>          
else<BR>            
dm.rssc6.Edit;<BR></FONT></DIV>
<DIV><FONT face=Arial size=2>Lo que me queda es buscar en el FPC a ver si lo 
puedo parchear, debe ser relativamente facil de arregla en el FPC, tan solo debe 
bastar con agregar el tipo DECIMAL = DOUBLE</FONT></DIV>
<DIV><FONT face=Arial size=2></FONT> </DIV>
<DIV><FONT face=Arial size=2>Talves lo hallan agregado ya en el FPC 3.0.1, 
habría que revisar.</FONT></DIV>
<DIV><FONT face=Arial size=2> </DIV></FONT>
<DIV><FONT face=Arial size=2>Saludos Reiterados</DIV></FONT>
<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">Fredy Gonzales 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=fredyg1965@gmail.com 
  href="mailto:fredyg1965@gmail.com">Fredy Gonzales</A> </DIV>
  <DIV style="FONT: 10pt arial"><B>Sent:</B> Thursday, February 23, 2017 10:10 
  AM</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>
  <DIV dir=auto>yo creo que intentes hacer el query desde un store procedure y 
  devuelvas. query, creo que es ub problema de conversión a la hora de la 
  consulta.</DIV>
  <DIV class=gmail_extra><BR>
  <DIV class=gmail_quote>El 23/2/2017 09:23, "Maxi via Lazarus-es" <<A 
  href="mailto:lazarus-es@lists.lazarus-ide.org">lazarus-es@lists.lazarus-ide.org</A>> 
  escribió:<BR type="attribution">
  <BLOCKQUOTE class=quote 
  style="PADDING-LEFT: 1ex; MARGIN: 0px 0px 0px 0.8ex; BORDER-LEFT: #ccc 1px solid">
    <DIV dir=ltr>
    <DIV>El filtrado de registros es bastante limitado, y lo fue siempre desde 
    delphi.<BR></DIV>Creo que lo mejor es hacer el firtro en el where de la 
    consulta y traer solo que que necesitas.<BR></DIV>
    <DIV class=gmail_extra>
    <DIV class=elided-text><BR>
    <DIV class=gmail_quote>El 22 de febrero de 2017, 17:37, Ismael L. Donis 
    Garcia via Lazarus-es <SPAN dir=ltr><<A 
    href="mailto:lazarus-es@lists.lazarus-ide.org" 
    target=_blank>lazarus-es@lists.lazarus-ide.<WBR>org</A>></SPAN> 
    escribió:<BR>
    <BLOCKQUOTE class=gmail_quote 
    style="PADDING-LEFT: 1ex; MARGIN: 0px 0px 0px 0.8ex; BORDER-LEFT: #ccc 1px solid"><U></U>
      <DIV 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"><B>From:</B> <A 
        title=lazarus-es@lists.lazarus-ide.org 
        href="mailto:lazarus-es@lists.lazarus-ide.org" target=_blank>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" target=_blank>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" target=_blank>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>
        <DIV class=m_-964437090715854956h5>
        <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" 
        target=_blank>lazarus-es@lists.lazarus-ide.<WBR>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')<WBR>.AsString + ') and (subcta = ''' 
          +  dm.rssc1.FieldByName('subcta')<WBR>.AsString + ''') and 
          (capitulo = ''' +  dm.rssc1.FieldByName('capitulo<WBR>').AsString 
          + ''') and (subcap = ''' +  
          dm.rssc1.FieldByName('subcap')<WBR>.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('<WBR>cuenta').AsString) and</DIV>
        <DIV>          (subcta = ''' +  
        dm.rssc1.FieldByName('subcta')<WBR>.AsString + ''') and</DIV>
        <DIV>          (capitulo = ''' +  
        dm.rssc1.FieldByName('capitulo<WBR>').AsString + ''') and</DIV>
        <DIV>          (subcap = ''' +  
        dm.rssc1.FieldByName('subcap')<WBR>.AsString + ''');</DIV>
        <DIV><BR></DIV>
        <DIV>Jesus Reyes A.</DIV>
        <DIV> </DIV></DIV></DIV>
        <P></P>
        <HR>

        <P></P>______________________________<WBR>_________________<BR>Lazarus-es 
        mailing list<BR><A href="mailto:Lazarus-es@lists.lazarus-ide.org" 
        target=_blank>Lazarus-es@lists.lazarus-ide.o<WBR>rg</A><BR><A 
        href="http://lists.lazarus-ide.org/listinfo/lazarus-es" 
        target=_blank>http://lists.lazarus-ide.org/l<WBR>istinfo/lazarus-es</A><BR>
        <P></P></BLOCKQUOTE></DIV><BR>______________________________<WBR>_________________<BR>Lazarus-es 
      mailing list<BR><A href="mailto:Lazarus-es@lists.lazarus-ide.org" 
      target=_blank>Lazarus-es@lists.lazarus-ide.o<WBR>rg</A><BR><A 
      href="http://lists.lazarus-ide.org/listinfo/lazarus-es" target=_blank 
      rel=noreferrer>http://lists.lazarus-ide.org/l<WBR>istinfo/lazarus-es</A><BR><BR></BLOCKQUOTE></DIV><BR><BR 
    clear=all><BR></DIV><FONT color=#888888>-- <BR>
    <DIV class=m_-964437090715854956gmail_signature 
    data-smartmail="gmail_signature">El que pregunta aprende, y el que contesta 
    aprende a responder.<BR><BR>No a la obsolecencia programada: <A 
    href="http://www.rtve.es/noticias/20110104/productos-consumo-duran-cada-vez-menos/392498.shtml" 
    target=_blank>http://www.rtve.es/noticias/<WBR>20110104/productos-consumo-<WBR>duran-cada-vez-menos/392498.<WBR>shtml</A><BR><BR>Linux 
    User #495070<BR><A href="http://domonetic.com/blog" 
    target=_blank>http://domonetic.com/blog</A></DIV></FONT></DIV><BR>______________________________<WBR>_________________<BR>Lazarus-es 
    mailing list<BR><A 
    href="mailto:Lazarus-es@lists.lazarus-ide.org">Lazarus-es@lists.lazarus-ide.<WBR>org</A><BR><A 
    href="http://lists.lazarus-ide.org/listinfo/lazarus-es" target=_blank 
    rel=noreferrer>http://lists.lazarus-ide.org/<WBR>listinfo/lazarus-es</A><BR><BR></BLOCKQUOTE></DIV><BR></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>