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 21-09-2007
Avatar de novato03
novato03 novato03 is offline
Miembro
 
Registrado: ago 2007
Posts: 45
Poder: 0
novato03 Va por buen camino
Unhappy Filtros con maskedit

Hola amigos del clubdelphi, mi pregunta es, cómo le hago para filtrar un registro de teléfono en este formato (809)999-9999?, ya que cuando lo intento en ese formato da error. Utilizo delphi-7 y access.

Si alguien me puede dar una ayuda, se lo agradecería, gracias anticipadas...
Responder Con Cita
  #2  
Antiguo 21-09-2007
Avatar de enecumene
[enecumene] enecumene is offline
Miembro de Oro
 
Registrado: may 2006
Ubicación: Santo Domingo, Rep. Dom.
Posts: 3.040
Poder: 22
enecumene Va por buen camino
Hola, podrias postear algo codigo? para asi poderte ayudar.

Saludos.
__________________

Mi BLOG - ¡Joder, leanse la guia de estilo!
Las Palabras son enanas, los ejemplos gigantes.
Responder Con Cita
  #3  
Antiguo 23-09-2007
Avatar de novato03
novato03 novato03 is offline
Miembro
 
Registrado: ago 2007
Posts: 45
Poder: 0
novato03 Va por buen camino
Cool Asunto

Este es el código que utilizo...

Código Delphi [-]
procedure TFrmContactos.MaskEdit1Change(Sender: TObject);
var
   Filtro : String;
begin

   If (MaskEdit1.Text <> '') then
   begin
      Dmodulo.tblContactos.Filtered := False;
      If ComboBox1.Text = 'Teléfono' then Filtro := 'telefono Like '+MaskEdit1.Text
         else If ComboBox1.Text = 'Celular' then Filtro := 'celular Like '''+ MaskEdit1.Text + '*''';
      Dmodulo.tblContactos.Filter := Filtro;
      Dmodulo.tblContactos.Filtered := True
   end
   else Dmodulo.tblContactos.Filtered := False;

end;

Cuando utilizo un Edit me presente al siguiente error al empezar a digitar el número en este formato (809)999-9999.


Cita:
Project Sisconem.exe raised exception class EOleException with message 'No se encontró el elemento en la colección que corresponde con el nombre o el ordinal pedido'. Process stopped. Use or Run to continue.
y cuando utilizo un MaskEdit presenta el siguiente error...

Cita:
Project Sisconem.exe raised exception class EOleException with message 'Argumentos incorrectos, fuera del intervalo permitido o en conflicto con otros'. Process stopped. Use or Run to continue.

Es que acaso no es posible filtrar con formato como este (809)999-9999?
Responder Con Cita
  #4  
Antiguo 23-09-2007
waly2k1 waly2k1 is offline
Miembro
 
Registrado: dic 2006
Ubicación: El país de las maravillas(Argentina)
Posts: 251
Poder: 18
waly2k1 Va por buen camino
Error de Nombre de Campo

No vi mucho el codigo, pero el 1º error que te presenta es porque no existe el nombre del campo por el cual estas filtrando.
Verificá bien en tu tabla si los campos telefono y celular existen realmente, quizas en plural, acentuados o algo por el estilo.
El segundo es porque tenes un lio con los apóstrofes '''.

En lugar de traer una tabla con todos los contactos y despues filtrar, te recomiendo uses un query y lo cargas cuando selecciones en el combo.

Si bien el like en Access funciona con asterisco, cambialo por % que de esta forma te va a funcionar con cualquier BD.

Por qué no usas un poco de lógica ?
al cargar el combo lo cargas asi: TELEFONO y CELULAR (sacando el acento de tel.)
Entonces usas
Filtro := ComboBox1.Text + 'LIKE ' + QuotedStr( MaskEdit1.Text ) + '%';

Así te queda mas legible.
Saludos y espero haberte ayudado

Última edición por waly2k1 fecha: 23-09-2007 a las 05:42:08.
Responder Con Cita
  #5  
Antiguo 23-09-2007
Avatar de novato03
novato03 novato03 is offline
Miembro
 
Registrado: ago 2007
Posts: 45
Poder: 0
novato03 Va por buen camino
Red face Asunto

Gracias por la ayuda, pero me sigue presentando el mismo error, en todo caso el código que escribi arriba me finciona perfectamente con Código con su respectivo acento en el combobox, tambien funciona con empresa, contacto, etc, el problema ocurre al implemntar la busqueda por teléfono en este formato, sin estos simbolos ()- me funciona pero al incluirlos bam error, ya sea con maskedit o edit.
Responder Con Cita
  #6  
Antiguo 23-09-2007
Avatar de enecumene
[enecumene] enecumene is offline
Miembro de Oro
 
Registrado: may 2006
Ubicación: Santo Domingo, Rep. Dom.
Posts: 3.040
Poder: 22
enecumene Va por buen camino
Hola, Creo que te faltan comillas aqui:

Código Delphi [-]
If ComboBox1.Text = 'Teléfono' then Filtro := 'telefono Like '+MaskEdit1.Text+ '*'''

intentalo, luego nos comentas.

Saludos.
__________________

Mi BLOG - ¡Joder, leanse la guia de estilo!
Las Palabras son enanas, los ejemplos gigantes.
Responder Con Cita
  #7  
Antiguo 23-09-2007
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 29
Lepe Va por buen camino
Filtro := ComboBox1.Text + 'LIKE ' + QuotedStr( MaskEdit1.Text ) + '%';

ummmm, el comodin debe estar dentro del QuotedStr y antes de la palabra "like" falta un espacio (o dará fallo al ejecutar el sql)

Código Delphi [-]
Filtro := ComboBox1.Text + ' LIKE ' + QuotedStr( MaskEdit1.Text+ '%') ;
y ahora si, todo el texto y el comodín se encierran entre comillas.

Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.

Última edición por Lepe fecha: 23-09-2007 a las 15:55:14.
Responder Con Cita
  #8  
Antiguo 23-09-2007
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
Aquí la pregunta seria:
Los campos Teléfono y Celular son Numéricos o texto en la base de datos.
Si son numéricos no va a aceptar ().
Saludos
Responder Con Cita
  #9  
Antiguo 23-09-2007
waly2k1 waly2k1 is offline
Miembro
 
Registrado: dic 2006
Ubicación: El país de las maravillas(Argentina)
Posts: 251
Poder: 18
waly2k1 Va por buen camino
Bien

Cita:
Empezado por Lepe Ver Mensaje
ummmm, el comodin debe estar dentro del QuotedStr y antes de la palabra "like" falta un espacio (o dará fallo al ejecutar el sql)

Efectivamente Sr., totalmente de acuerdo con tu acotación. Lo escribí rápido y no presté atención a esos 'detalles'.

Saludos
Responder Con Cita
  #10  
Antiguo 23-09-2007
Avatar de novato03
novato03 novato03 is offline
Miembro
 
Registrado: ago 2007
Posts: 45
Poder: 0
novato03 Va por buen camino
Cool Asunto

Gracias a todos por la ayuda, logré solucionar el problema para filtrar por el maskedit el único problema es que cuado limpio el mask edit no se muestran todos los registros en el DBGrid se queda en blanco, aúnque ese problema no sucede cuando realizo la busqueda por código, empresa, contacto, etc, inmediatamente limpio regresan al DBDgrid los registros pero con el maskedit no sucede la misma situación. Acaso debo agregar algo más?
Responder Con Cita
  #11  
Antiguo 24-09-2007
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 29
Lepe Va por buen camino
Acabo de releer el hilo y me parece extraño que funcione. Tenía entendido que "Like" era incompatible con la propiedad Filter (o sea que no funcionaba). Revisa que devuelva los datos correctos.

Yo hablaba de sql, es decir de un TADOQuery en el que su claúsula where fuese la comentada.

En cuanto a lo que comentas, puede que esté interfiriendo las otras condiciones de búsqueda, en resumen, debería quedar algo así:
Código Delphi [-]
 Dmodulo.tblContactos.Filtered := False;
 if ChequedaCondiciones then
   Dmodulo.tblContactos.Filtered := True;
Ya que si cada condición pone el Filtered a True/False, puede que al final no haga lo que deseas.


Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
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
MaskEdit NuncaMas Varios 11 07-01-2010 13:11:08
Filtros sobre Filtros en Paradox Fabricio Tablas planas 9 03-04-2007 18:40:36
Problema con maskedit Chompiras Varios 3 07-02-2006 01:25:30
MaskEdit!! JCarlos OOP 3 19-01-2005 20:45:32
MaskEdit scooterjgm OOP 5 20-09-2004 07:13:12


La franja horaria es GMT +2. Ahora son las 06:25:11.


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