<html><body><div style="font-family: arial, helvetica, sans-serif; font-size: 14pt; color: #000000"><style></style><div>Hola, por qué no pruebas a cambiar el campo Decimal a Numeric. El resultado para campos con pocos decimales es el mismo pero no te dará problemas.</div><div><br data-mce-bogus="1"></div><div>Un saludo</div><div><br></div><hr id="zwchr" data-marker="__DIVIDER__"><div data-marker="__HEADERS__"><b>De: </b>"Ismael L. Donis Garcia via Lazarus-es" <lazarus-es@lists.lazarus-ide.org><br><b>Para: </b>"Spanish version of Lazarus List" <lazarus-es@lists.lazarus-ide.org><br><b>CC: </b>"Ismael L. Donis Garcia" <slibre@natio.co.cu><br><b>Enviados: </b>Jueves, 23 de Febrero 2017 17:53:12<br><b>Asunto: </b>Re: [Lazarus-es] Error: Field "Nombre_Campo" has an invalid field type (BCD) to base index on.<br></div><br><div data-marker="__QUOTED_TEXT__">
<div><span face="Arial" size="2" data-mce-style="font-family: Arial; font-size: small;" style="font-family: Arial; font-size: small;">No ese no es el problema la consulta la obtengo
vacia y el error me ocurre cuando voy llenando la consulta.</span></div>
<div><span face="Arial" size="2" data-mce-style="font-family: Arial; font-size: small;" style="font-family: Arial; font-size: small;"></span> </div>
<div><span face="Arial" size="2" data-mce-style="font-family: Arial; font-size: small;" style="font-family: Arial; font-size: small;">La consulta la he tenido que dajar de la siguiente
forma (original):</span></div>
<div><span face="Arial" size="2" data-mce-style="font-family: Arial; font-size: small;" style="font-family: Arial; font-size: small;"></span> </div>
<div><span face="Arial" size="2" data-mce-style="font-family: Arial; font-size: small;" style="font-family: Arial; font-size: small;">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)';</span></div>
<div><span face="Arial" size="2" data-mce-style="font-family: Arial; font-size: small;" style="font-family: Arial; font-size: small;"></span> </div>
<div><span face="Arial" size="2" data-mce-style="font-family: Arial; font-size: small;" style="font-family: Arial; font-size: small;">Si la consulta la dejo como sigue me da error al
hacer el filtro:</span></div>
<div><span face="Arial" size="2" data-mce-style="font-family: Arial; font-size: small;" style="font-family: Arial; font-size: small;">
<div><span face="Arial" size="2" data-mce-style="font-family: Arial; font-size: small;" style="font-family: Arial; font-size: small;">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)';</span></div>
<div> </div></span></div>
<div><span face="Arial" size="2" data-mce-style="font-family: Arial; font-size: small;" style="font-family: Arial; font-size: small;">Pongo la llave primaria idsa = null para no obtener
ningun registro.</span></div>
<div><span face="Arial" size="2" data-mce-style="font-family: Arial; font-size: small;" style="font-family: Arial; font-size: small;"></span> </div>
<div><span face="Arial" size="2" data-mce-style="font-family: Arial; font-size: small;" style="font-family: Arial; font-size: small;">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</span></div>
<div><span face="Arial" size="2" data-mce-style="font-family: Arial; font-size: small;" style="font-family: Arial; font-size: small;"></span> </div>
<div><span face="Arial" size="2" data-mce-style="font-family: Arial; font-size: small;" style="font-family: Arial; font-size: small;"> 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></span></div>
<div><span face="Arial" size="2" data-mce-style="font-family: Arial; font-size: small;" style="font-family: Arial; font-size: small;">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</span></div>
<div><span face="Arial" size="2" data-mce-style="font-family: Arial; font-size: small;" style="font-family: Arial; font-size: small;"></span> </div>
<div><span face="Arial" size="2" data-mce-style="font-family: Arial; font-size: small;" style="font-family: Arial; font-size: small;">Talves lo hallan agregado ya en el FPC 3.0.1,
habría que revisar.</span></div>
<div><span face="Arial" size="2" data-mce-style="font-family: Arial; font-size: small;" style="font-family: Arial; font-size: small;"> </span></div>
<div><span face="Arial" size="2" data-mce-style="font-family: Arial; font-size: small;" style="font-family: Arial; font-size: small;">Saludos Reiterados</span></div>
<div><span size="2" data-mce-style="font-size: small;" style="font-size: small;">========<br>| ISMAEL |<br>========</span></div>
<div>----- Original Message ----- </div>
<blockquote style="padding-right: 0px; padding-left: 5px; margin-left: 5px; border-left: #000000 2px solid; margin-right: 0px;" data-mce-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;" data-mce-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" target="_blank">Fredy Gonzales via
Lazarus-es</a> </div>
<div style="font: 10pt arial;" data-mce-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;" data-mce-style="font: 10pt arial;"><b>Cc:</b> <a title="fredyg1965@gmail.com" href="mailto:fredyg1965@gmail.com" target="_blank">Fredy Gonzales</a> </div>
<div style="font: 10pt arial;" data-mce-style="font: 10pt arial;"><b>Sent:</b> Thursday, February 23, 2017 10:10
AM</div>
<div style="font: 10pt arial;" data-mce-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>
<br>
<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" target="_blank">lazarus-es@lists.lazarus-ide.org</a>>
escribió:<br>
<blockquote class="quote" style="padding-left: 1ex; margin: 0px 0px 0px 0.8ex; border-left: #ccc 1px solid;" data-mce-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.org</a>></span>
escribió:<br>
<blockquote class="gmail_quote" style="padding-left: 1ex; margin: 0px 0px 0px 0.8ex; border-left: #ccc 1px solid;" data-mce-style="padding-left: 1ex; margin: 0px 0px 0px 0.8ex; border-left: #ccc 1px solid;"><u></u>
<div>
<div><span face="Arial" size="2" data-mce-style="font-family: Arial; font-size: small;" style="font-family: Arial; font-size: small;">Muchas gracias Jesús pero casi estoy seguro
que es un problema del FPC.</span></div>
<div><span face="Arial" size="2" data-mce-style="font-family: Arial; font-size: small;" style="font-family: Arial; font-size: small;"></span> </div>
<div><span face="Arial" size="2" data-mce-style="font-family: Arial; font-size: small;" style="font-family: Arial; font-size: small;">El campo haber no es entero ya que es un
campo donde se guarda el valor de los adeudos, por ese motivo es
monetario.</span></div>
<div><span face="Arial" size="2" data-mce-style="font-family: Arial; font-size: small;" style="font-family: Arial; font-size: small;">Filtro para ver si una persona ya a pagado
algún tipo específico de adeudo en el año.</span></div>
<div><span face="Arial" size="2" data-mce-style="font-family: Arial; font-size: small;" style="font-family: Arial; font-size: small;"></span> </div>
<div><span face="Arial" size="2" data-mce-style="font-family: Arial; font-size: small;" style="font-family: Arial; font-size: small;">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ó.</span></div>
<div> </div>
<div><span face="Arial" size="2" data-mce-style="font-family: Arial; font-size: small;" style="font-family: Arial; font-size: small;">Antes tenía la consulta. Campo Haber como
Decimal, así está por diseño en la BD.</span></div>
<div><span face="Arial" size="2" data-mce-style="font-family: Arial; font-size: small;" style="font-family: Arial; font-size: small;"></span> </div>
<div><span face="Arial" size="2" data-mce-style="font-family: Arial; font-size: small;" style="font-family: Arial; font-size: small;">select ....., a.haber, ... from creditos
a ....</span> </div>
<div><span face="Arial" size="2" data-mce-style="font-family: Arial; font-size: small;" style="font-family: Arial; font-size: small;"></span> </div>
<div><span face="Arial" size="2" data-mce-style="font-family: Arial; font-size: small;" style="font-family: Arial; font-size: small;">De esta forma me da error al intentar filtrar
el SQLQuery. Entonces probé de la siguiente forma:</span></div>
<div><span face="Arial" size="2" data-mce-style="font-family: Arial; font-size: small;" style="font-family: Arial; font-size: small;"></span> </div>
<div><span face="Arial" size="2" data-mce-style="font-family: Arial; font-size: small;" style="font-family: Arial; font-size: small;">
<div><span face="Arial" size="2" data-mce-style="font-family: Arial; font-size: small;" style="font-family: Arial; font-size: small;">select ....., cast(a.haber as double
precision) as haber, ... from creditos a
....</span> </div></span></div>
<div><span face="Arial" size="2" data-mce-style="font-family: Arial; font-size: small;" style="font-family: Arial; font-size: small;"></span> </div>
<div><span face="Arial" size="2" data-mce-style="font-family: Arial; font-size: small;" style="font-family: Arial; font-size: small;">Y de esta forma el filtro me funciona
correctamente.</span></div>
<div><span face="Arial" size="2" data-mce-style="font-family: Arial; font-size: small;" style="font-family: Arial; font-size: small;"></span> </div>
<div><span face="Arial" size="2" data-mce-style="font-family: Arial; font-size: small;" style="font-family: Arial; font-size: small;">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</span></div>
<div><span face="Arial" size="2" data-mce-style="font-family: Arial; font-size: small;" style="font-family: Arial; font-size: small;"></span> </div>
<div><span face="Arial" size="2" data-mce-style="font-family: Arial; font-size: small;" style="font-family: Arial; font-size: small;">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.</span></div>
<div><span face="Arial" size="2" data-mce-style="font-family: Arial; font-size: small;" style="font-family: Arial; font-size: small;"></span> </div>
<div><span face="Arial" size="2" data-mce-style="font-family: Arial; font-size: small;" style="font-family: Arial; font-size: small;">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:</span></div>
<div><span face="Arial" size="2" data-mce-style="font-family: Arial; font-size: small;" style="font-family: Arial; font-size: small;"></span> </div>
<div><span face="Arial" size="2" data-mce-style="font-family: Arial; font-size: small;" style="font-family: Arial; font-size: small;">SErrIndexBasedOnInvField = 'Field "%s" has an
invalid field type (%s) to base index on.';</span></div>
<div><span face="Arial" size="2" data-mce-style="font-family: Arial; font-size: small;" style="font-family: Arial; font-size: small;"></span> </div>
<div><span face="Arial" size="2" data-mce-style="font-family: Arial; font-size: small;" style="font-family: Arial; font-size: small;">de la unit dbconst</span></div>
<div><span face="Arial" size="2" data-mce-style="font-family: Arial; font-size: small;" style="font-family: Arial; font-size: small;"></span> </div>
<div><span face="Arial" size="2" data-mce-style="font-family: Arial; font-size: small;" style="font-family: Arial; font-size: small;"></span> </div>
<div><span face="Arial" size="2" data-mce-style="font-family: Arial; font-size: small;" style="font-family: Arial; font-size: small;">Saludos Cordiales</span></div>
<div><span size="2" data-mce-style="font-size: small;" style="font-size: small;">========<br>| ISMAEL |<br>========</span></div>
<div>----- Original Message ----- </div>
<blockquote style="padding-right: 0px; padding-left: 5px; margin-left: 5px; border-left: #000000 2px solid; margin-right: 0px;" data-mce-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;" data-mce-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;" data-mce-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;" data-mce-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;" data-mce-style="font: 10pt arial;"><b>Sent:</b> Wednesday, February 22, 2017
3:04 PM</div>
<div style="font: 10pt arial;" data-mce-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">
<br>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.org</a>>
wrote:<br><br>
<blockquote style="padding-left: 1ex; margin: 0px 0px 0.8ex; border-left: #0000ff 2px solid;" data-mce-style="padding-left: 1ex; margin: 0px 0px 0.8ex; border-left: #0000ff 2px solid;">
<div><span face="Arial" size="2" data-mce-style="font-family: Arial; font-size: small;" style="font-family: Arial; font-size: small;">Estoy tratando de filtar un SQLQuery
incluyendo un campo Decimal de Firebird 2.5 y Lazarus me devuelve el
siguiente error:</span></div>
<div> </div><span face="Arial" size="2" data-mce-style="font-family: Arial; font-size: small;" style="font-family: Arial; font-size: small;"><span size="2" data-mce-style="font-size: small;" style="font-size: small;">
<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></span></span>
<div><span size="2" data-mce-style="font-size: small;" style="font-size: small;">========<br>| ISMAEL
|<br>========</span></div></blockquote>
<br>
<div>Seguro es Haber>0 y no Haber.AsInteger ?</div>
<br>
<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>
<br>
<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>
<br>
<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>
<br>
<div>Jesus Reyes A.</div>
<div> </div></div></div>
<p></p>
<hr>
<p></p>_______________________________________________<br>Lazarus-es
mailing list<br><a href="mailto:Lazarus-es@lists.lazarus-ide.org" target="_blank">Lazarus-es@lists.lazarus-ide.org</a><br><a href="http://lists.lazarus-ide.org/listinfo/lazarus-es" target="_blank">http://lists.lazarus-ide.org/listinfo/lazarus-es</a><br>
<p></p></blockquote></div><br>_______________________________________________<br>Lazarus-es
mailing list<br><a href="mailto:Lazarus-es@lists.lazarus-ide.org" target="_blank">Lazarus-es@lists.lazarus-ide.org</a><br><a href="http://lists.lazarus-ide.org/listinfo/lazarus-es" target="_blank" rel="noreferrer">http://lists.lazarus-ide.org/listinfo/lazarus-es</a><br><br></blockquote></div><br><br clear="all"><br></div><span color="#888888" data-mce-style="color: #888888;" style="color: #888888;">-- <br>
<div class="m_-964437090715854956gmail_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/20110104/productos-consumo-duran-cada-vez-menos/392498.shtml</a><br><br>Linux
User #495070<br><a href="http://domonetic.com/blog" target="_blank">http://domonetic.com/blog</a></div></span></div><br>_______________________________________________<br>Lazarus-es
mailing list<br><a href="mailto:Lazarus-es@lists.lazarus-ide.org" target="_blank">Lazarus-es@lists.lazarus-ide.org</a><br><a href="http://lists.lazarus-ide.org/listinfo/lazarus-es" target="_blank" rel="noreferrer">http://lists.lazarus-ide.org/listinfo/lazarus-es</a><br><br></blockquote></div><br></div>
<p>
</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>
<br>_______________________________________________<br>Lazarus-es mailing list<br>Lazarus-es@lists.lazarus-ide.org<br>http://lists.lazarus-ide.org/listinfo/lazarus-es<br></div></div></body></html>