Página 1 de 1

Aplicar filtro problema con comillas

Publicado: Sab Ago 28, 2021 12:41 pm
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.

Re: Aplicar filtro problema con comillas

Publicado: Mar Ago 31, 2021 12:22 pm
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.

Re: Aplicar filtro problema con comillas

Publicado: Mar Ago 31, 2021 8:13 pm
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

Re: Aplicar filtro problema con comillas

Publicado: Mar Ago 31, 2021 9:10 pm
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.