Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Conexión con bases de datos (https://www.clubdelphi.com/foros/forumdisplay.php?f=2)
-   -   Otro problema relacionado con filtros (urgente) (https://www.clubdelphi.com/foros/showthread.php?t=2530)

ADN 28-07-2003 09:26:50

Otro problema relacionado con filtros (urgente)
 
Hola,


perdonad que haga otra pregunta más sobre filtros, pero es que no encuentro la solución al problema y voy contra reloj.

Tengo un objeto TTable al que intento filtrar por fechas, y pese a que la sintaxis parece correcta, siempre me salta una excepción que dice 'Operation not applicable'.

El filtrado sería algo de tipo:

tabla.Filter := 'fecha = ''25/07/2003''';
tabla.Filtered := True;


La tabla es de una base de datos MySQL.

Ayudadme, please!

__marcsc 28-07-2003 10:07:51

Hola,

supongo que debes cambiar el carácter " que utilizas para delimitar la data por el cárácter ' que es el que se utiliza en Delphi y SQL. Si quieres puedes utilizar la función de Delphi QuotedStr que lo que hace es precisamente "encomillar" una cadena (por ejemplo si le pasas HOLA te devuelve 'HOLA')

Debes verificar, además, que el formato de fecha del filtro es admitido por el SGBD.

Suerte.

ADN 28-07-2003 12:04:01

No he usado el símbolo " (chr 34), sino dos veces ', lo que pasa es que si lo pongo seguidos se ven así: ''

Intenta seleccionar con el ratón en mi post anterior y verás como son dos caracteres independientes, y no uno solo :-)

En cuanto al formato de fecha, este es correcto, y de hecho es el único que me admite, ya que he probado todas las variantes posibles de tipo dd/MM/yy, MM/dd/yy, yyyy-MM-dd, etc., etc., etc.
con los cuáles obtengo otro error diferente: 'Date format not valid'.

El formato usado es el único que no me da ese error, pero me da el error que comenté al principio.

__cadetill 28-07-2003 12:14:12

Prueba con una variable

Código:

var
  str : string;
begin
  str := 'fecha = ''25/07/2003''';
  tabla.Filter := str;
  tabla.Filtered := True;
end;

No se, recuerdo que a veces tube problemas al aplicar filtros asi directamente y se solucionaron asignandole una variable.

Otra alternativa seria hacerlo con una Query (si no representara muchos cambios).

Y otra alternativa seria programar el evento OnFilterRecord

Espero te sirva

ADN 28-07-2003 13:16:54

Lo de asignarla mediante una variable lo había probado ya. Pero no tiene nada que ver. De hecho, el mensaje de error se me lanza como una excepción de tipo eBDEngineError, así que depende directamente de BDE.

Al final para poder salir del paso me lo he tenido que currar con un TQuery, aunque me hubiese gustado haberlo solucionado como dios manda.

Gracias de todos modos.

__cadetill 28-07-2003 13:38:12

si es del BDE, entonces yo diria que es el formato de fecha que le estas pasando. De echo, acabo de hacer una consulta sobre mySQL poniendo en formato de fecha que indicas dd/mm/aaaa y me da error, en cambio, con el formato aaaa-mm-dd me ha funcionado correctamente

Pruebalo a ver

ADN 28-07-2003 13:50:44

El formato yyyy-MM-dd me funciona perfectamente sobre consultas, efectivamente, pero no funciona al filtrar directamente el dataset mediante la propiedad Filter.


La franja horaria es GMT +2. Ahora son las 19:40:32.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi