Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Conexión con bases de datos
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Conexión con bases de datos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 22-02-2012
Avatar de Vlady
Vlady Vlady is offline
Miembro
 
Registrado: ago 2005
Posts: 217
Poder: 19
Vlady Va por buen camino
filtrar por longitud de campo

Hola amigos del club delphi quisiera saber sis es posible filtrar en un clientdataset por la longitud de un campo tal vez utilizando un la funcion length. Yo utilizo la funcion char_length al realizar la consulta SQL pero para filter no me funciona, que otra opción puede existir?
Responder Con Cita
  #2  
Antiguo 22-02-2012
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.040
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
¿Puedes poner el fuente?
Responder Con Cita
  #3  
Antiguo 22-02-2012
Avatar de Vlady
Vlady Vlady is offline
Miembro
 
Registrado: ago 2005
Posts: 217
Poder: 19
Vlady Va por buen camino
Código Delphi [-]
    CDSBTabla.Filter := 'length(CUENTA) <=  '  + intTostr(Edi1.Text);
    CDSBTabla.Filtered := True;

Esto es lo que tengo pero no me funciona donde edit1.Text es un entero
Responder Con Cita
  #4  
Antiguo 22-02-2012
Avatar de oscarac
[oscarac] oscarac is offline
Miembro Premium
 
Registrado: sep 2006
Ubicación: Lima - Perú
Posts: 2.010
Poder: 20
oscarac Va por buen camino
estas usando un numero (LENGTH) con un caracter inttoSTR()
cuidado con eso
osea...

3 = '3'
__________________
Dulce Regalo que Satanas manda para mi.....
Responder Con Cita
  #5  
Antiguo 22-02-2012
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Pues no, de hecho es correcto su uso de IntToStr, ya que la cadena resultante sería:

Código Delphi [-]
DSBTabla.Filter := 'length(CUENTA) <=  ' + '3';

o sea

Código Delphi [-]
DSBTabla.Filter := 'length(CUENTA) <=  3';

En caso de que no se pueda usar una función en la expresión del Filter siempre queda la posibilidad de usar el evento OnFilterRecord del dataset en el que puede ponerse casi cualquier condición de filtrado.

// Saludos
Responder Con Cita
  #6  
Antiguo 22-02-2012
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola Vlady.

Hacer esa comparación desde la propiedad Filter no lo veo viable, pero sí desde el evento OnFilterRecord:

Código Delphi [-]
procedure TForm1.CDSBTablaFilterRecord(DataSet: TDataSet; var Accept: Boolean);
var
  N: Integer;
begin
  if TryStrToInt(Edit1.Text, N) then
    Accept:= Length(CDSBTabla.FieldByName('CUENTA').AsString) <= N;
end;

Llamada ejemplo:
Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
begin
   CDSBTabla.Filtered:= False;
   CDSBTabla.Filtered:= True;
end;

Saludos.

Edito: Luego de poner el ejemplo veo que yá roman había mencionado esta posibilidad.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....

Última edición por ecfisa fecha: 22-02-2012 a las 20:56:09.
Responder Con Cita
  #7  
Antiguo 22-02-2012
Avatar de Vlady
Vlady Vlady is offline
Miembro
 
Registrado: ago 2005
Posts: 217
Poder: 19
Vlady Va por buen camino
excelente mil gracias
Responder Con Cita
  #8  
Antiguo 22-02-2012
Avatar de Al González
[Al González] Al González is offline
In .pas since 1991
 
Registrado: may 2003
Posts: 5.604
Poder: 29
Al González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en bruto
Comparto lo dicho por Román, y también lo dicho por ecfisa, pero sí es viable usar la propiedad Filter:

Código Delphi [-]
CDSBTabla.Filter := 'Substring (CUENTA, 1, ' + IntToStr (Edi1.Text) + ') = CUENTA';
CDSBTabla.Filtered := True;

Un filtrado abrazo.

Al González.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Longitud campo Blob amerika111 Firebird e Interbase 14 14-07-2011 20:08:12
Longitud del Campo muy grande aanil SQL 2 28-04-2010 02:34:30
longitud de un campo alfanumerico dtomeysoto SQL 2 10-03-2007 20:08:55
Problema con longitud de campo Data4 Tablas planas 0 04-03-2007 00:51:43
Validacion de longitud en un campo. Delphiboy Conexión con bases de datos 1 10-12-2005 19:36:37


La franja horaria es GMT +2. Ahora son las 01:46: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
Copyright 1996-2007 Club Delphi