In order for this site to work correctly we need to store a small file (called a cookie) on your computer. Most every site in the world does this, however since the 25th of May 2011, by law we have to get your permission first. Please abandon the forum if you disagree.

Para que este foro funcione correctamente es necesario guardar un pequeño fichero (llamado cookie) en su ordenador. La mayoría de los sitios de Internet lo hacen, no obstante desde el 25 de Marzo de 2011 y por ley, necesitamos de su permiso con antelación. Abandone este foro si no está conforme.

Aplicar filtro problema con comillas

Foro público de Xailer en español
Responder
emilio.gil
Mensajes: 9
Registrado: Vie Jun 18, 2021 5:41 pm

Aplicar filtro problema con comillas

Mensaje por emilio.gil »

Hola a todos:

Aplico un filtro al DataSet

cSetFilter := 'nombre_modelo = "' + ::oTestigo_filtro + '"'
::oArticulos:SetFilter(cSetFilter)

Si el campo ::oTestigo_filtro contiene comillas simples no hay ningún problema y aplica el filtro correctamente. El problema lo tengo cuando dicho campo contiene al mismo tiempo comillas simples y dobles.

¿Alguien conoce algún modo de evitar este problema?

Anticipadamente gracias,

Emilio Gil.
Avatar de Usuario
jfgimenez
Site Admin
Mensajes: 5706
Registrado: Lun Abr 06, 2015 8:48 pm
Contactar:

Re: Aplicar filtro problema con comillas

Mensaje por jfgimenez »

Emilio,

puedes "escapar" la cadena del filtro, usando el método StrSql() del datasource correspondiente. P.ej: cSetFilter := "nombre_modelo = '" + oDB:StrSql( ::oTestigo_filtro ) + "'"

Lo normal es usar las comillas dobles para tus cadenas, y las comillas simples para las expresiones en SQL, que son las que reconocen todos los motores.
José F. Giménez
[Equipo de Xailer / Xailer team]
http://www.xailer.com
http://www.xailer.info
emilio.gil
Mensajes: 9
Registrado: Vie Jun 18, 2021 5:41 pm

Re: Aplicar filtro problema con comillas

Mensaje por emilio.gil »

Hola Jose:

Muchas gracias por tu respuesta, pero no sabría a qué DataSource aplicarlo, supongo que al mismo que pretendo filtrar (en mi ejemplo ::oArticulos ?)

cSetFilter := "nombre_modelo = '" + oArticulos:StrSql( ::oTestigo_filtro ) + "'"
::oArticulos:SetFilter(cSetFilter)

Así, desde luego no funciona y provoca el siguiente error

TSQLQUERY:STRSQL(1615)
Error BASE/1004 Message or field name not found: TSQLQuery:STRSQL
Argumentos: ( [ 1] = Tipo: C Valor: APRILIA RS 50 '99/'05)

ya que no existe ningún método llamado StrSql para el DataSource

Saludos
emilio.gil
Mensajes: 9
Registrado: Vie Jun 18, 2021 5:41 pm

Re: Aplicar filtro problema con comillas

Mensaje por emilio.gil »

Hola Jose:

Rectifico lo dicho, había confundido el DataSource con el TSqlQuery, y aplicando el método StrSql, en mi caso al tMariaDbDatasource, funciona perfectamente. Bien es cierto que dicho método no aparece documentado en la ayuda de Xailer.

Saludos y muchas gracias por todo.
Responder