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 03-09-2005
Avatar de DarkByte
DarkByte DarkByte is offline
Miembro
 
Registrado: sep 2003
Ubicación: Desconocido
Posts: 1.322
Poder: 22
DarkByte Va por buen camino
Filtrar datos de una tabla

Buenas, estoy haciendo un programa de bases de datos y creo que necesito una vez más de vuestro consejo.

La cuestión. Tengo dos tablas. Vendedoras y Clientas. Toda clienta tiene que pertenecer a una vendedora y este campo no se puede omitir con tal de realizar luego un recuento, y por su parte, toda vendedora ha de pertenecer a otra. Excepto dos o tres que tengo un CheckBox para indicar que son independientes (no tienen nadie por encima).

Para las que son obligatorias, tengo un Edit en ReadOnly y un botón a la derecha, el cual, al ser pulsado, crea el form frmBuscarVendedora, que contiene un edit, un dbgrid y un boton de aceptar, para cuando se ha señalado la vendedora.

Ahora bien, estoy atascado ahí, pues no sé ni la mejor manera de coseguir que el form sea sencillo y útil cuando se llene con un montón de vendedoras ni el modo de que regrese el nombre de una vendedora exacto.

Espero haberme explicado bien. Resolveré con gusto toda duda sobre mi planteamiento. Gracias

Indicar que utilizo ADO y de motor, ACCESS
__________________
:)
Responder Con Cita
  #2  
Antiguo 03-09-2005
Avatar de marcoszorrilla
marcoszorrilla marcoszorrilla is offline
Capo
 
Registrado: may 2003
Ubicación: Cantabria - España
Posts: 11.221
Poder: 10
marcoszorrilla Va por buen camino
No veo muy claro lo de "todo vendedora ha de pertenecer a otra", supongo que quieres decir según deduzco por el resto del texto, que toda vendedora tiene una Jefa excepto algunas.

Creo que la solución sería crear una tabla con las Jefas, de tal manera que al dar de alta cualquier vendedora sea obligatorio tenga una jefa.

Las que no tienen Jefa, se puede crear una Jefa en blanco sin ningún texto, no me gusta mucho, o una Jefa que diga "Independiente"....

Un Saludo.
__________________
Guía de Estilo de los Foros
Cita:
- Ça c'est la caisse. Le mouton que tu veux est dedans.
Responder Con Cita
  #3  
Antiguo 03-09-2005
Avatar de DarkByte
DarkByte DarkByte is offline
Miembro
 
Registrado: sep 2003
Ubicación: Desconocido
Posts: 1.322
Poder: 22
DarkByte Va por buen camino
El caso es que una vendedora puede reclutar a una clienta para que se haga vendedora.

El tema es hacer una búsqueda en la tabla por aproximación al nombre y no se cual sería la mejor manera de conseguirlo. La tabla se llama Vendedoras y el campo "De"
__________________
:)
Responder Con Cita
  #4  
Antiguo 03-09-2005
Avatar de jmariano
jmariano jmariano is offline
Miembro
 
Registrado: jul 2005
Posts: 376
Poder: 19
jmariano Va por buen camino
Si no estoy entendiendote mal, para hacer una búsqueda por el nombre de la vendedora (pudiendo especificar cualquier parte del nombre, ya sea el nombre en sí o el apellido, siempre y cuando, claro, almacenes ambas cosas en el mismo campo) podrías usar la propiedad "Filter" y construir el filtro con la cláusula "LIKE":

Código Delphi [-]
procedure frmBuscarVendedora.AceptarClick(Sender: TObject);
begin
  ADOTable1.Filter := '(CampoNombre) LIKE ' + QuotedStr('%' + Edit1.Text + '%');
  ADOTable1.Filtered := True;
end;

De esta manera, el nombre podrá ser buscado por aproximación (ya sea especificando parte del nombre o parte del apellido, etc.), y entre más específico sea el usuario menos registros irá devolviendo. (Acuerdate, eso sí, de cancelar el filtro si quieres mostrar todas las vendedoras).

(En caso de tener el nombre y los apellidos divididos en dos campos, podrías crear un campo calculado con el valor de los dos y hacer la búsqueda por este campo).

Saludos!

Última edición por jmariano fecha: 03-09-2005 a las 16:33:01.
Responder Con Cita
  #5  
Antiguo 03-09-2005
Avatar de vtdeleon
vtdeleon vtdeleon is offline
Miembro
 
Registrado: abr 2004
Ubicación: RD & USA
Posts: 3.236
Poder: 24
vtdeleon Va por buen camino
Saludos
Cita:
Empezado por jmariano
Si no estoy entendiendote mal, para hacer una búsqueda por el nombre de la vendedora (pudiendo especificar cualquier parte del nombre, ya sea el nombre en sí o el apellido, siempre y cuando, claro, almacenes ambas cosas en el mismo campo) podrías usar la propiedad "Filter" y construir el filtro con la cláusula "LIKE":
Interesante, (no lo he probado pero) no sabia que se podia utilizar Like en la propiedad Filter
__________________
Van Troi De León
(Not) Guía, Code vB:=Delphi-SQL, ¿Cómo?
Viajar en el tiempo no es teóricamente posible, pues si lo fuera, ya estarían aqui contándonos al respecto!
Responder Con Cita
  #6  
Antiguo 04-09-2005
Avatar de DarkByte
DarkByte DarkByte is offline
Miembro
 
Registrado: sep 2003
Ubicación: Desconocido
Posts: 1.322
Poder: 22
DarkByte Va por buen camino
He usado
Código Delphi [-]
  dm.Vendedoras.Filter := '(Nombre) LIKE' + QuotedStr('%' + eVendedoras.Text + '%');
  dm.Vendedoras.Filtered := True;
En el OnChange y OnKeyPress y me abofetea con el siguiente error:

"Argumentos incorrectos, fuera del intervalo permitido o en conflicto con otros".

Así, en castellano y todo...
__________________
:)
Responder Con Cita
  #7  
Antiguo 04-09-2005
Avatar de DarkByte
DarkByte DarkByte is offline
Miembro
 
Registrado: sep 2003
Ubicación: Desconocido
Posts: 1.322
Poder: 22
DarkByte Va por buen camino
Afino más, el error sucede al dispararse el evento. Compilar lo hace perfectamente.
__________________
:)
Responder Con Cita
  #8  
Antiguo 05-09-2005
Avatar de jmariano
jmariano jmariano is offline
Miembro
 
Registrado: jul 2005
Posts: 376
Poder: 19
jmariano Va por buen camino
Te ocurre porque te falta un espacio después del "LIKE" para separar la condición de búsqueda.

Código Delphi [-]
// Acuerdate de poner un espacio despues del 'LIKE'
dm.Vendedoras.Filter := '(Nombre) LIKE ' + QuotedStr('%' + eVendedoras.Text + '%');
dm.Vendedoras.Filtered := True;

Saludos!
Responder Con Cita
  #9  
Antiguo 05-09-2005
Avatar de DarkByte
DarkByte DarkByte is offline
Miembro
 
Registrado: sep 2003
Ubicación: Desconocido
Posts: 1.322
Poder: 22
DarkByte Va por buen camino
Funciona a la perfección!!

Muchisimas gracias!
__________________
:)
Responder Con Cita
  #10  
Antiguo 22-11-2006
JuanErasmo JuanErasmo is offline
Miembro
 
Registrado: ago 2005
Posts: 544
Poder: 19
JuanErasmo Va por buen camino
Por favor...alguien traduzcame este filtro a C++ Builder!!

hola amiigos. Estoy intentando hacer un filtro en una tabla ADO..pero no me funciona...me sale un error de parametros incorrectos...y yo veo que en delphi es muy facil!!!

es ese mismo filtro de aca
Código:
dm.Vendedoras.Filter := '(Nombre) LIKE ' + QuotedStr('%' + eVendedoras.Text + '%');
dm.Vendedoras.Filtered := True;
,
pero en builder c++ no se como se hace...
Por favor alguien ayudeme!!!!
Gracias
Responder Con Cita
  #11  
Antiguo 22-11-2006
Avatar de vtdeleon
vtdeleon vtdeleon is offline
Miembro
 
Registrado: abr 2004
Ubicación: RD & USA
Posts: 3.236
Poder: 24
vtdeleon Va por buen camino
Saludos

Será...:
Código Delphi [-]
dm->Vendedoras->Filter = '(Nombre) LIKE ' + QuotedStr('%' + eVendedoras.Text + '%');
dm->Vendedoras->Filtered = True;
__________________
Van Troi De León
(Not) Guía, Code vB:=Delphi-SQL, ¿Cómo?
Viajar en el tiempo no es teóricamente posible, pues si lo fuera, ya estarían aqui contándonos al respecto!
Responder Con Cita
  #12  
Antiguo 22-11-2006
JuanErasmo JuanErasmo is offline
Miembro
 
Registrado: ago 2005
Posts: 544
Poder: 19
JuanErasmo Va por buen camino
No funciona....creo que no son con ' ....
' ' con comillas simples....gracias...pero no funciona asi....
Responder Con Cita
  #13  
Antiguo 22-11-2006
Avatar de vtdeleon
vtdeleon vtdeleon is offline
Miembro
 
Registrado: abr 2004
Ubicación: RD & USA
Posts: 3.236
Poder: 24
vtdeleon Va por buen camino
Cita:
Empezado por JuanErasmo
' ' con comillas simples....gracias...pero no funciona asi....
Pos " comillas complejas()*. Quizas ya lo has probrado, pero....

(*)Broma

Saludos
__________________
Van Troi De León
(Not) Guía, Code vB:=Delphi-SQL, ¿Cómo?
Viajar en el tiempo no es teóricamente posible, pues si lo fuera, ya estarían aqui contándonos al respecto!
Responder Con Cita
  #14  
Antiguo 05-08-2010
gonza_619 gonza_619 is offline
Miembro
 
Registrado: feb 2010
Posts: 157
Poder: 15
gonza_619 Va por buen camino
Cita:
Empezado por jmariano Ver Mensaje
Te ocurre porque te falta un espacio después del "LIKE" para separar la condición de búsqueda.

Código Delphi [-]// Acuerdate de poner un espacio despues del 'LIKE' dm.Vendedoras.Filter := '(Nombre) LIKE ' + QuotedStr('%' + eVendedoras.Text + '%'); dm.Vendedoras.Filtered := True;


Saludos!
hola , miren tengo un problema , es que ahora en vez de filtrar desde una tabla necesito hacerlo con una tabla relacionada, pues tengo una tabla Cursos, y otra Alumno, los Alumnos estan relacionados en la tabla detalle Curso, quero filtrar desde la tabla Curso por el nombre del alumno.
Lo que hice fue agregar un nuevo campo en Curso "nombrealumno", y lo quise filtrar desde ese campo , y me da error(no puede filtrar campo nombrealumno), claro no es el campo original de la tabla sino q lo agrege, pero que solucion habria? ya que necesito filtrar por el nombre del alumno que esta cursando tal curso.
gracias, el codigo es el mismo que esta arriba desde tabla Curso
Responder Con Cita
  #15  
Antiguo 05-08-2010
DELFIN2000 DELFIN2000 is offline
Miembro
 
Registrado: mar 2010
Posts: 12
Poder: 0
DELFIN2000 Va por buen camino
bueno podria se asi:

1. Debe existir en ambas tablas un campo ya sea con el mismo nombre o diferente, pero debe ser del mismo tipo.

2. por ejemplo el campo clave del alumno podria estar tambien en la tabla CURSO, o El campo CLAVE del curso podria estar en la tabla de ALUMNO dependiendo. Obviamente debe existir el mismo dato de la clave en ambas tablas de lo contrario no te va a filtar nada.

3. creas tu relacion y cuando selecciones el dato te mostrara los datos de la otra tabla que contengan el mismo valor.

espero te sirva
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


La franja horaria es GMT +2. Ahora son las 16:46:29.


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