Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Error Filtro "84X-F5-22FF is not a valid date and time" (https://www.clubdelphi.com/foros/showthread.php?t=72995)

Lenny 24-03-2011 21:31:37

Error Filtro "84X-F5-22FF is not a valid date and time"
 
Hola y gracias de antemano. Tengo un problema bastante molesto, les cuento:

Tengo un DBEdit el cual segun el contenido (OC) filtra una tabla:
Código Delphi [-]
procedure TPRUEBAS.DBEdit1Change(Sender: TObject);
begin
BDatos.OCPRODUCTOSTAB.Filter := 'OC = ''' + DBEdit1.text + '''';
BDatos.OCPRODUCTOSTAB.Filtered := True;
end;

y esta tabla a la vez filtra otra segun su contenido (Este codigo es sacado de un problema anterior que me solucionaron ak):

Código Delphi [-]
var
Filtro: String;
begin
BDATOS.OCPRODUCTOSTAB.Filter := 'OC = ''' + DBEOC.Text + '''';
BDATOS.OCPRODUCTOSTAB.Filtered := True;
  BDATOS.OCPRODUCTOSTAB.First;
  if not BDATOS.OCPRODUCTOSTAB.Eof then
  begin
    Filtro := 'CODIGO = ' + chr(39) + BDATOS.OCPRODUCTOSTAB.FieldByName('CODIGO').ASstring + chr(39);
    BDATOS.OCPRODUCTOSTAB.Next;
    while not BDATOS.OCPRODUCTOSTAB.Eof do
    begin
       Filtro := Filtro + ' or CODIGO = ' + chr(39) + BDATOS.OCPRODUCTOSTAB.FieldByName('CODIGO').ASstring + chr(39);
       BDATOS.OCPRODUCTOSTAB.Next
    end;
    BDATOS.PRODUCTOSSUMTAB.filter := Filtro;
    BDATOS.PRODUCTOSSUMTAB.Filtered := True;
  end;
  BDatos.PRODUCTOSSUMTAB.First;
BDatos.OCPRODUCTOSTAB.First;
end;

Todo Ok, lo que pasa es cuando existe algun contenido como "84X-F5-22FF" tira el siguiente error:

Código:

"84X-F5-22FF is not a valid date and time"
siendo que no queda guardado como fecha, y en MySQL "CODIGO" es VARCHAR.
Cualquier ayuda bienvenida sea, de antemano gracias...

PD: Delphi 2010, Zeos 7.0.0, MySQL

gatosoft 25-03-2011 02:56:41

Amigo Lenny, el de los "casos fantasma", esta vez tampoco pusisite la linea que genera el error... pero supongo que debe ser en la línea

Código Delphi [-]
BDATOS.PRODUCTOSSUMTAB.Filtered := True;

Lo único que se me ocurre es que en tu dataset tengas creado un campo persisitntes que no sea varchar, sino que este definido con otro tipo de dato, por ejemplo float o datetime... "pero es solo un globo al aire" (es decir no estoy seguro)...

Considero que, como la vez pasada, no deberías mirar en tu codigo, sino en tu dataset (eventos, propiedades, campos persistentes).

Por otro lado, no se si los Zeos, tengan algún Bug conocido en donde las cadenas de tipo XX-XX-XXXX las interprete como fecha...

y para que no parezca que no hubo aporte:

has probado utilizar la función QuotedStr?

Código Delphi [-]
chr(39) + BDATOS.OCPRODUCTOSTAB.FieldByName('CODIGO').ASstring + chr(39)

Código Delphi [-]
QuotedStr(BDATOS.OCPRODUCTOSTAB.FieldByName('CODIGO').ASstring)

A mi me parece mas manejable cuando hay muchos paréntesis y concatenación de cadenas...

Nos cuentas como te va...

Lenny 25-03-2011 04:32:06

Jajajajajajaja... mientras no se me de como titulo "El extraño novato de los casos fantasmas: Datos perdidos y otros no tanto... " toto ok (Broma)...

Gracias por los comentarios, revisare paso por paso lo que me dices gatosoft, mañana te cuento cuales fueron los resultados... un abrazo y gracias!!!


La franja horaria es GMT +2. Ahora son las 08:33:21.

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