Sign in Join

Live chat for Free Pascal, Lazarus, Delphi and every Pascal programmer.

Mailing lists / lazarus-es / 2011-08

Filtros en TSQLQuery

6 messages · 2 people · –

Reply by email Subscribe to this list Your subscription

Read-only archive. Use j and k to move between messages.

Ismael L. Donis Garcia

Estoy tratando de filtrar un TSQLQuery de la siguiente forma:

dm.rssc1.Filter:='cuenta = 110 and subcta = '''1''' and capitulo = '''' and subcap = '''';
dm.rssc1.Filtered:=true;

Pero siempre me da dm.rssc1.EOF

Aunque existan registros con esa condici�n. Como podr�a solventar este problema?

Uso Lazarus 0.9.30.1.31909 con FPC 2.4.4

Desde Ya Gracias
=========
|| ISMAEL ||
=========
------------ pr�xima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://lists.lazarus.freepascal.org/pipermail/lazarus-es/attachments/20110816/9c369d5f/attachment.html>

Reply by email

Maxi
to Ismael L. Donis Garcia
prob�
dm.rssc1.Filter:='(cuenta = 110) and (subcta = '''1''') and (capitulo
= '''') and (subcap = '''');
o
dm.rssc1.Filter:='(cuenta = 110) and (subcta = ''1'') and (capitulo =
null ) and (subcap = null);

sino empez� a agregar filtros de a uno para ver cual falla

-----

El que pregunta aprende, y el que contesta aprende a responder.

Reply by email

Ismael L. Donis Garcia
to Maxi

En primera me faltaban los par�ntesis, pero sigue el problema

Cuando pongo por ejemplo el filtro:

(cuenta = 135) and (subcta = '')

Me da error, no me coje el filtro cuando la cadena es de logitud cero, en la base de datos el valor no es null ya que tiene por defecto al valor ''

Para establecer el filtro uso variables:

dm.rssc1.Filter:='(cuenta = ' +
dbg.DataSource.DataSet.FieldByName('cuenta').AsString + ') and (subcta = '''
+ sscta + ''') and (capitulo = ''' + scap + ''') and (subcap = ''' + sscap +
''')';

sacta, scap y sscap son variables string que pueden tener un valor o simplemente ser igual a ''

Uso Firebird 2.1.4

Saludos Reiterados
=========
|| ISMAEL ||
=========

Earlier message 21 lines
----- Original Message ----- From: "Maxi" <maximiliano.duarte en gmail.com> To: "Spanish version of Lazarus List" <lazarus-es en lists.lazarus.freepascal.org> Sent: Tuesday, August 16, 2011 4:16 PM Subject: Re: [Lazarus-es] Filtros en TSQLQuery prob� dm.rssc1.Filter:='(cuenta = 110) and (subcta = '''1''') and (capitulo = '''') and (subcap = ''''); o dm.rssc1.Filter:='(cuenta = 110) and (subcta = ''1'') and (capitulo = null ) and (subcap = null); sino empez� a agregar filtros de a uno para ver cual falla ----- El que pregunta aprende, y el que contesta aprende a responder.

Reply by email

Maxi
to Ismael L. Donis Garcia

prueba usando la funcion quoted

filtro:= Format("(cuenta = %d) and (subcta = %s),[135,QuotedStr('')];

y revisa si los nuemors no son letras en el campo.

2011/8/16 Ismael L. Donis Garcia <ismael en citricos.co.cu>:

Show quoted text 57 lines
En primera me faltaban los par�ntesis, pero sigue el problema Cuando pongo por ejemplo el filtro: Me da error, no me coje el filtro cuando la cadena es de logitud cero, en la base de datos el valor no es null ya que tiene por defecto al valor '' Para establecer el filtro uso variables: dm.rssc1.Filter:='(cuenta = ' + dbg.DataSource.DataSet.FieldByName('cuenta').AsString + ') and (subcta = ''' + sscta + ''') and (capitulo = ''' + scap + ''') and (subcap = ''' + sscap + ''')'; sacta, scap y sscap son variables string que pueden tener un valor o simplemente ser igual a '' Uso Firebird 2.1.4 Saludos Reiterados ========= || ISMAEL || ========= ----- Original Message ----- From: "Maxi" <maximiliano.duarte en gmail.com> To: "Spanish version of Lazarus List" <lazarus-es en lists.lazarus.freepascal.org> Sent: Tuesday, August 16, 2011 4:16 PM Subject: Re: [Lazarus-es] Filtros en TSQLQuery prob� dm.rssc1.Filter:='(cuenta = 110) and (subcta = '''1''') and (capitulo = '''') and (subcap = ''''); o dm.rssc1.Filter:='(cuenta = 110) and (subcta = ''1'') and (capitulo = null ) and (subcap = null); sino empez� a agregar filtros de a uno para ver cual falla ----- El que pregunta aprende, y el que contesta aprende a responder. _______________________________________________ Lazarus-es mailing list Lazarus-es en lists.lazarus.freepascal.org http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus-es _______________________________________________ Lazarus-es mailing list Lazarus-es en lists.lazarus.freepascal.org http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus-es
No a la obsolecencia programada: http://dimensionargentina.blogspot.com/2011/01/todo-esta-disenado-para-romperse.html Twitter: @nenunocomar Identi.ca: @nenuno Linux User #495070 Ubuntu User #28504 http://miexperiencialinux.blogspot.com/ El que pregunta aprende, y el que contesta aprende a responder.

Reply by email

Ismael L. Donis Garcia
to Maxi

Pues nada sigo con problemas, para probar con un solo campo (aunque realmente debo filtrar por 4, 1 num�rico y el resto de cadenas) pongo:

dm.rssc1.Filter:=format('(subcta=%s)',[135, QuotedStr('')]);

Y a la hora de ejecusi�n me da el error:

Invalid argument index in format ''''

Saludos Reiterados
=========
|| ISMAEL ||
=========

Earlier message 92 lines
----- Original Message ----- From: "Maxi" <maximiliano.duarte en gmail.com> To: "Spanish version of Lazarus List" <lazarus-es en lists.lazarus.freepascal.org> Sent: Tuesday, August 16, 2011 5:40 PM Subject: Re: [Lazarus-es] Filtros en TSQLQuery prueba usando la funcion quoted filtro:= Format("(cuenta = %d) and (subcta = %s),[135,QuotedStr('')]; y revisa si los nuemors no son letras en el campo. 2011/8/16 Ismael L. Donis Garcia <ismael en citricos.co.cu>: > En primera me faltaban los par�ntesis, pero sigue el problema > > Cuando pongo por ejemplo el filtro: > > > > Me da error, no me coje el filtro cuando la cadena es de logitud cero, en > la > base de datos el valor no es null ya que tiene por defecto al valor '' > > Para establecer el filtro uso variables: > > dm.rssc1.Filter:='(cuenta = ' + > dbg.DataSource.DataSet.FieldByName('cuenta').AsString + ') and (subcta = > ''' > + sscta + ''') and (capitulo = ''' + scap + ''') and (subcap = ''' + sscap > + > ''')'; > > sacta, scap y sscap son variables string que pueden tener un valor o > simplemente ser igual a '' > > Uso Firebird 2.1.4 > > Saludos Reiterados > ========= > || ISMAEL || > ========= > ----- Original Message ----- From: "Maxi" <maximiliano.duarte en gmail.com> > To: "Spanish version of Lazarus List" > <lazarus-es en lists.lazarus.freepascal.org> > Sent: Tuesday, August 16, 2011 4:16 PM > Subject: Re: [Lazarus-es] Filtros en TSQLQuery > > > prob� > dm.rssc1.Filter:='(cuenta = 110) and (subcta = '''1''') and (capitulo > = '''') and (subcap = ''''); > o > dm.rssc1.Filter:='(cuenta = 110) and (subcta = ''1'') and (capitulo = > null ) and (subcap = null); > > sino empez� a agregar filtros de a uno para ver cual falla > > ----- > > El que pregunta aprende, y el que contesta aprende a responder. > > _______________________________________________ > Lazarus-es mailing list > Lazarus-es en lists.lazarus.freepascal.org > http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus-es > > > > _______________________________________________ > Lazarus-es mailing list > Lazarus-es en lists.lazarus.freepascal.org > http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus-es > -- No a la obsolecencia programada: http://dimensionargentina.blogspot.com/2011/01/todo-esta-disenado-para-romperse.html Twitter: @nenunocomar Identi.ca: @nenuno Linux User #495070 Ubuntu User #28504 http://miexperiencialinux.blogspot.com/ El que pregunta aprende, y el que contesta aprende a responder.

Reply by email

Ismael L. Donis Garcia
to Maxi: prueba usando la funcion quoted filtro:= Format("(cuenta = %d) and (subcta =…

Acabo de probar de las 2 formas y ninguna funciona:

dm.rssc1.Filter:='(cuenta = ' +
dbg.DataSource.DataSet.FieldByName('cuenta').AsString + ') and (subcta = '''
+ sscta + ''') and (capitulo = ''' + scap + ''') and (subcap = ''' + sscap +
''')';

dm.rssc1.Filter:='(cuenta = ' +
dbg.DataSource.DataSet.FieldByName('cuenta').AsString + ') and ' + format('(subcta=%s)',[AnsiQuotedStr(pchar(sscta), '''')]) + ' and ' + format('(capitulo=%s)',[AnsiQuotedStr(pchar(scap), '''')]) + ' and ' + format('(subcap=%s)',[AnsiQuotedStr(pchar(sscap), '''')]);

El problema lo da cuando tengo que filtrar un campo que sea igual a una cadena vacia, no nula. Tengo los campos que asuman por defecto el valor ''

Field Type Default CUENTA SMALLINT
SUBCTA VARCHAR(3) ''
CAPITULO VARCHAR(7) ''
SUBCAP VARCHAR(7) ''

En Firebird 2.1.4

Saludos Reiterados
=========
|| ISMAEL ||
=========

Earlier message 92 lines
----- Original Message ----- From: "Maxi" <maximiliano.duarte en gmail.com> To: "Spanish version of Lazarus List" <lazarus-es en lists.lazarus.freepascal.org> Sent: Tuesday, August 16, 2011 5:40 PM Subject: Re: [Lazarus-es] Filtros en TSQLQuery prueba usando la funcion quoted filtro:= Format("(cuenta = %d) and (subcta = %s),[135,QuotedStr('')]; y revisa si los nuemors no son letras en el campo. 2011/8/16 Ismael L. Donis Garcia <ismael en citricos.co.cu>: > En primera me faltaban los par�ntesis, pero sigue el problema > > Cuando pongo por ejemplo el filtro: > > > > Me da error, no me coje el filtro cuando la cadena es de logitud cero, en > la > base de datos el valor no es null ya que tiene por defecto al valor '' > > Para establecer el filtro uso variables: > > dm.rssc1.Filter:='(cuenta = ' + > dbg.DataSource.DataSet.FieldByName('cuenta').AsString + ') and (subcta = > ''' > + sscta + ''') and (capitulo = ''' + scap + ''') and (subcap = ''' + sscap > + > ''')'; > > sacta, scap y sscap son variables string que pueden tener un valor o > simplemente ser igual a '' > > Uso Firebird 2.1.4 > > Saludos Reiterados > ========= > || ISMAEL || > ========= > ----- Original Message ----- From: "Maxi" <maximiliano.duarte en gmail.com> > To: "Spanish version of Lazarus List" > <lazarus-es en lists.lazarus.freepascal.org> > Sent: Tuesday, August 16, 2011 4:16 PM > Subject: Re: [Lazarus-es] Filtros en TSQLQuery > > > prob� > dm.rssc1.Filter:='(cuenta = 110) and (subcta = '''1''') and (capitulo > = '''') and (subcap = ''''); > o > dm.rssc1.Filter:='(cuenta = 110) and (subcta = ''1'') and (capitulo = > null ) and (subcap = null); > > sino empez� a agregar filtros de a uno para ver cual falla > > ----- > > El que pregunta aprende, y el que contesta aprende a responder. > > _______________________________________________ > Lazarus-es mailing list > Lazarus-es en lists.lazarus.freepascal.org > http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus-es > > > > _______________________________________________ > Lazarus-es mailing list > Lazarus-es en lists.lazarus.freepascal.org > http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus-es > -- No a la obsolecencia programada: http://dimensionargentina.blogspot.com/2011/01/todo-esta-disenado-para-romperse.html Twitter: @nenunocomar Identi.ca: @nenuno Linux User #495070 Ubuntu User #28504 http://miexperiencialinux.blogspot.com/ El que pregunta aprende, y el que contesta aprende a responder.

Reply by email