Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Tablas planas (https://www.clubdelphi.com/foros/forumdisplay.php?f=20)
-   -   Error al Filtrar un Campo Autonumerico (https://www.clubdelphi.com/foros/showthread.php?t=85627)

feliz-58 09-04-2014 23:05:59

Error al Filtrar un Campo Autonumerico
 
No puedo abrir el Filtro en un campo autonúmerico, puedo filtrar cualquier otro, pero cuando intento el mismo código con el campo autonúmerico me da error.

El código del filtro es este:
Código Delphi [-]
if EBuscar.Text <> EmptyStr then
  begin
      DM.ADbuscarclientes.Filtered:=False;
      DM.ADbuscarclientes.Filter:='Codigo like '+QuotedStr('%'+ EBuscar.Text + '%');
      DM.ADbuscarclientes.Filtered:=True;
  end
  Else
  begin
      DM.ADbuscarclientes.Filtered:=False;
  end;

Adotable.

Saludos!

Caminante 09-04-2014 23:38:41

Hola

Si el campo es numérico ¿porque lo filtras como si fuera texto?


Y ¿Cual es el error que te da?


Saludos

feliz-58 10-04-2014 01:42:51

Cita:

Empezado por Caminante (Mensaje 474977)
Hola

Si el campo es numérico ¿porque lo filtras como si fuera texto?


Y ¿Cual es el error que te da?


Saludos

No se Puede Abrir el Filtro.

Explicate, Dices que:
Cita:

Empezado por Caminante (Mensaje 474977)
¿porque lo filtras como si fuera texto?

Como es eso? :confused::confused:

Caminante 10-04-2014 01:55:14

En esta linea
Cita:

Empezado por feliz-58 (Mensaje 474976)
Código Delphi [-]
      DM.ADbuscarclientes.Filter:='Codigo like '+QuotedStr('%'+ EBuscar.Text + '%');
Saludos!

El operador like se aplica a campos tipo texto. Asi que el filtro lo aplicas como si fuera un campo tipo texto. Pero si es un autonumerico entonces no puede ser texto.

Saludos

feliz-58 10-04-2014 01:58:46

Oh :confused:
 
Cita:

Empezado por Caminante (Mensaje 474985)
En esta linea


El operador like se aplica a campos tipo texto. Asi que el filtro lo aplicas como si fuera un campo tipo texto. Pero si es un autonumerico entonces no puede ser texto.

Saludos

Como lo hago para un numérico? :confused:


Saludos!

Caminante 10-04-2014 02:14:51

Supongo que seria mas o menos asi:

Código Delphi [-]
DM.ADbuscarclientes.Filter:=QuotedStr('Codigo =' + TRIM(EBuscar.Text);

Eso si debes validar el texto antes de colocar el filtro (En caso no se escriba un numero).

Saludos

ecfisa 10-04-2014 02:49:47

Hola feliz-58.

Como te comenta Caminante, no tiene sentido usar el operador LIKE sobre números, sería una concepción totalmente subjetiva.

Imagina esta situación:
¿ Es 1000 similar a 10000 ? Pero claro! si debe ser hijo, sólo tiene un cero de diferencia... :)
¿ O es 1000 similar a 999 ? Por supuesto! si solo se diferencian en una unidad.
Generalmente un número se compara con otro por su igualdad, cardinalidad (u ordinalidad): <, <=, =, >=, > .

Aunque siempre tuve en baja estima el uso de códigos, siendo este un campo numérico, yo haría: La busqueda del código por igualdad y la busqueda por semejanza sobre la razón social (nombre o sociedad) del cliente.

Convengamos que es mas probable que el empleado recuerde, aunque con dudas que el cliente que llamó era Mario Perez o Marco Perez y no que era el 001673 o el 001763...

Saludos :)

feliz-58 10-04-2014 03:51:36

Cita:

Empezado por Caminante (Mensaje 474987)
Supongo que seria mas o menos asi:

Código Delphi [-]
DM.ADbuscarclientes.Filter:=QuotedStr('Codigo =' + TRIM(EBuscar.Text);

Eso si debes validar el texto antes de colocar el filtro (En caso no se escriba un numero).

Saludos

Gracias Por la Explicación, Probare.

Cita:

Empezado por ecfisa
Hola feliz-58.

Como te comenta Caminante, no tiene sentido usar el operador LIKE sobre números, sería una concepción totalmente subjetiva.

Imagina esta situación:
¿ Es 1000 similar a 10000 ? Pero claro! si debe ser hijo, sólo tiene un cero de diferencia...
¿ O es 1000 similar a 999 ? Por supuesto! si solo se diferencian en una unidad.
Generalmente un número se compara con otro por su igualdad, cardinalidad (u ordinalidad): <, <=, =, >=, > .

Aunque siempre tuve en baja estima el uso de códigos, siendo este un campo numérico, yo haría: La busqueda del código por igualdad y la busqueda por semejanza sobre la razón social (nombre o sociedad) del cliente.

Convengamos que es mas probable que el empleado recuerde, aunque con dudas que el cliente que llamó era Mario Perez o Marco Perez y no que era el 001673 o el 001763...

Saludos

Gracias por tomarte el tiempo de escribir, y entiendo, uso el filtrado por codigo solo para que se vea otra opcion mas XD.

Saludos.

Gracias por todo, hasta el luego.

feliz-58 10-04-2014 04:03:20

Cita:

Empezado por Caminante (Mensaje 474987)
Supongo que seria mas o menos asi:

Código Delphi [-]
DM.ADbuscarclientes.Filter:=QuotedStr('Codigo =' + TRIM(EBuscar.Text);

Eso si debes validar el texto antes de colocar el filtro (En caso no se escriba un numero).

Saludos

Gracias, y es asi:
Código Delphi [-]
DM.ADbuscarclientes.Filter:= 'Codigo ='+QuotedStr(TRIM(EBuscar.Text));

Saludos!:)

Caminante 10-04-2014 06:56:04

En realidad creo que deberia ser:

Código Delphi [-]
DM.ADbuscarclientes.Filter:= 'Codigo ='+ Trim(EBuscar.Text);

Me olvide de quitar el quotedstr del inicio de la cadena.

Saludos...


La franja horaria es GMT +2. Ahora son las 18:57:07.

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