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