PDA

Ver la Versión Completa : Lookup en Dbgrid


Moparova
24-07-2007, 20:51:04
Hola, tengo una gran duda.

Tengo un dbgrid con campos de busqueda, el problema es que no son editables es decir, el primero me devuelve el num de empleado (busca en la tabla de empleados) para validar que exista, el problema es que son 5000 empleados y hay que buscarlo, ya que solo me permite seleccionarlo mediante el cuadro despegable , lo que yo quiero es poder escribirlo, hay alguna propiedad que me deje hacer esto.
Gracias :)

Caral
24-07-2007, 20:55:57
Hola
La verdad no entiendo muy bien lo que quieres hacer, a lo que entiendo, se podria hacer con un edit, un filtro o sql, no se de varias maneras.
Saludos

Moparova
24-07-2007, 21:07:18
Lo que trato de hacer es lo siguiente.
En mi tabla almaceno la información de capacitación de los empleados.

Los campos son los siguientes:

Id_Emp ( es el campo lookup relacionado a la tabla de empleados)
Curso
calificación

Mi problema es en el id_emp, que solo me permite seleccionarlo del cuadro de lsita que aparece, pero son más de 5000 empleados, lo que yo quisiera hacer es poder escribirlo directamente o buscarlo, cualquiera de las 2 formas

no se si me explique bien

Gracias

Caral
24-07-2007, 21:14:36
Hola
Sigo sin entender y saber que base de datos usas y con que componentes la enlazas, pero para que te des una idea con un filtro, seria algo asi:
Colocas un edit, en donde vas a poner el nombre o codigo, colocas un table, en mi caso uso adotable, y haces el filtro en el evento OnChange.
Código Delphi [-] (http://www.clubdelphi.com/foros/#)var Filtro : String; begin If (Edit1.Text <> '') then begin ADOTable1.Filtered := False; Filtro := 'Id_Emp Like '+Edit1.Text ADOTable1.Filter := Filtro; ADOTable1.Filtered := True end else ADOTable1.Filtered := False; end;


Tambien se puede hacer con una sentencia sql, pero para eso necesito mas datos.
Saludos

Caral
24-07-2007, 21:17:39
Hola
Sigo sin entender y saber que base de datos usas y con que componentes la enlazas, pero para que te des una idea con un filtro, seria algo asi:
Colocas un edit, en donde vas a poner el nombre o codigo, colocas un table, en mi caso uso adotable, y haces el filtro en el evento OnChange.

var Filtro : String;
begin
If (Edit1.Text <> '') then
begin ADOTable1.Filtered := False; Filtro := 'Id_Emp Like '+Edit1.Text ADOTable1.Filter := Filtro; ADOTable1.Filtered := True end else ADOTable1.Filtered := False; end;


Tambien se puede hacer con una sentencia sql, pero para eso necesito mas datos.
Saludos

roman
24-07-2007, 21:18:50
Lo que yo no entiendo es por qué un campo lookup. Da toda la impresión de que Id_Emp es un campo de la tabla de capacitación- la llave foránea que enlaza con la tabla de empleados, de manera que no hay necesidad de un campo de búsqueda. Se pone el campo tal cual, y se escribe el id del empleado.

// Saludos

Caral
24-07-2007, 21:20:31
Hola
Perdon pero no me sale el codigo legible en esto, lo intento de nuevo:

var Filtro : String;
begin
If (Edit1.Text <> '') then
begin
ADOTable1.Filtered := False;
Filtro := 'Id_Emp Like '+Edit1.Text;
ADOTable1.Filter := Filtro;
ADOTable1.Filtered := True
end
else
ADOTable1.Filtered := False;
end;

Moparova
24-07-2007, 22:28:59
Gracias Román, pero lo haga para validar que exista el empleado dentro de la tabla de empleados.

Gracias Caral, pero lo hago directamente en el dbgrid.