Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Conexión con bases de datos (https://www.clubdelphi.com/foros/forumdisplay.php?f=2)
-   -   asignar los registros de una consulta a un bdlookupcombobox (https://www.clubdelphi.com/foros/showthread.php?t=63324)

yorgelis 09-02-2009 17:17:09

asignar los registros de una consulta a un bdlookupcombobox
 
compañeros necesito la ayuda de todo aquel que me diga la forma de asignarle los registros que devuelve una consulta hecha a una Base de datos a un dblookupcombobox
lo he hecho asi:
dblookupcombobox.assign(tbquery)
pero no me funciona agradeceria mucho si alguien me ayuda en esto uso delphi7
espero por algunos de ustedes.

jhonny 09-02-2009 17:33:29

A la propiedad ListSource del dblookupcombobox, debes asignarle el DataSource que este asignado al TDataSet que trae dicha consulta...

Luego en la propiedad ListField indicarle los campos que deseas visualizar, separados por punto y coma.

En ListFieldIndex, indicar cual es el campo que deseas que se visualice una vez el usuario, seleccione una opción.

Y en KeyField asignar el campo "llave" de esa consulta (Este sera el campo que contiene el valor que se guardara, en la propiedad KeyValue y por lo tanto (Si es el caso) en el DataSet que esta "asignado" al DataSource que a su vez, esta "asignado" a la propiedad DataSource de tu dblookupcombobox).

Una ultima cosita... si asignas un valor a la propiedad DataSource de tu dblookupcombobox, deberás indicarle a que campo guardar el valor seleccionado, por medio de la propiedad DataField...

P.D: Que vaina tan larga esta... :D.

yorgelis 09-02-2009 21:40:17

respuesta
 
jhonny gracias por la ayuda en realidad eso lo hice ya, la idea es seleccionar desde una consulta los registros que quiero debido a que tengo una tabla que se llama trabajadores, los cuales pertenecen a una unidad por ejemplo
jhonny meson
yorgelis unidad1
jhonny2 unidad1
ya el nombre de la unidad se repite, por eso tengo que hacer un select distinct para mostrar dentro del bdlookupcombobox los nombre de las unidades pero sin repetirse, para despues que seleccione en este primer bdlookupcombobox la unidad en otro se me carguen los trabajadores de esa unidad entiendes como es la cosa??
que sucede cuando utilizo el query para hacer esto me da error no se como asignarle lo que el me devuelve para estos dblookupcombobox entiendes??
si conoces como hacer esto te agrdeceria de nuevo la ayuda.

joelphi 13-02-2009 23:21:23

Debes de Asignar los Parametros de retorno de tu Query.. al DbLookupcombobox..
Deves retornar el Id y la lista Por ejemplo en nombre de algun trabajador..
el Id Para que lo guardes por dento del programa deacuerdo al nombre seleccionado..

P/e:

si tu consulta es

Select Id,Nombre From Trabajador Where id = Parametroentrada

entonces Retornaras Id y Nombre Osea 2 Parametros y se lo asignas asi..

DbLookupcombobox1.Datasource.Dataset := Query.Dataset;
Dblookupcombobox1.keyField := Query.Dataset.fiedbyName("Id");
Dblookupcombobox1.ListField := Query.Dataset.fiedbyName("Nombre");

Espero te sirva ya que soy estudiante..

yorgelis 14-02-2009 01:30:51

gracias
 
gracias por tu respuesta intentare esa solucion a ver si las cosas funcionana espero que si no es asi me sigan ayudando con algunas dudas.
gracias por todo.

yorgelis 17-02-2009 18:20:05

nada de nada
 
joelphi lo siento pero probe las variantes que me diste y no me funcionan lo primero es cuando intento mediante codigo lo siguiente
DbLookupcombobox1.Datasource.Dataset := Query.Dataset;
Dblookupcombobox1.keyField := Query.Dataset.fiedbyName("Id");
Dblookupcombobox1.ListField := Query.Dataset.fiedbyName("Nombre");
primero mi query no tiene las propiedades dataset por tanto no puedo acceder a la de fieldbyname a no ser de esta manera
unidad.DataSource.DataSet:=Query1.DataSource.DataSet;
unidad es el name de mi dblookupcombobox ahora mediante esta manera el project explota y me dice que no hay memoria suficiente para la operacion en realidad no se que hacer estoy muy apurado con esta cosa debido a esto no he podido avanzar en el proyecto que estoy haciendo se que esas cosas son sencillas pero no me salen falta de trabajar en esto si alguien puede ayudarme de nuevo se los agradeceria mucho recuerden que estoy trabajando en delphi 7 a lo mejor tiene propiedades distintas en sus componentes lo cual debe ser muy seguro gracias a todos.

joelphi 17-02-2009 19:03:04

Es algo Facil..
 
En efecto mi Buen.. Asi se accesa a la propiedad Dataset, y asi la puedes asignar como lo muestras en el ejemplo que me pones..
..

Tengo un Ejemplo para ti esta hecho en Delphi 6.. pero si corre en el 7
hice lo siguiente..
Utilice Componentes ADO..
- Conecte un AdoConnecction a un server SQL 7.0 a la BD Master..

- puse un AdoQuey y lo conecte con el AdoConnection con la propiedad "Connection"

-puse un DataSource y lo conecte con el AdoQuey con su propiedad DataSet...

- Luego puse un DBLookupCombobox y no le asigne nada.. no le movi nada..

- despues puse un boton en donde le puse este pequeño codigo

ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('Select Id,Name From Sysobjects');
ADOQuery1.Prepared;
ADOQuery1.Open;
DBLookupComboBox1.ListSource:= DataSource2;
DBLookupComboBox1.KeyField := 'Id';
DBLookupComboBox1.ListField := 'Name';

Recuerda que esta conectado a la Base de datos master la cual tiene una tabla que se llama SysObjects y tiene Atributos como Id y Name(que esto es lo que retorna la consulta)..

Espero y te Sirva si no.. tengo el Ejemplo Guardado ..

Saludos¡¡

joelphi 17-02-2009 19:06:40

Es algo Facil..
 
En efecto mi Buen.. Asi se accesa a la propiedad Dataset, y asi la puedes asignar como lo muestras en el ejemplo que me pones..
..

Tengo un Ejemplo para ti esta hecho en Delphi 6.. pero si corre en el 7
hice lo siguiente..
Utilice Componentes ADO..
- Conecte un AdoConnecction a un server SQL 7.0 a la BD Master..

- puse un AdoQuey y lo conecte con el AdoConnection con la propiedad "Connection"

-puse un DataSource y lo conecte con el AdoQuey con su propiedad DataSet...

- Luego puse un DBLookupCombobox y no le asigne nada.. no le movi nada..

- despues puse un boton en donde le puse este pequeño codigo

ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('Select Id,Name From Sysobjects');
ADOQuery1.Prepared;
ADOQuery1.Open;
DBLookupComboBox1.ListSource:= DataSource2;
DBLookupComboBox1.KeyField := 'Id';
DBLookupComboBox1.ListField := 'Name';

Recuerda que esta conectado a la Base de datos master la cual tiene una tabla que se llama SysObjects y tiene Atributos como Id y Name(que esto es lo que retorna la consulta)..

Espero y te Sirva si no.. tengo el Ejemplo Guardado ..

Saludos¡¡

yorgelis 17-02-2009 22:22:08

de nuevo
 
joelphi mira te explicare bien mi problema para que me entiendas mejor
resulta ser que quiero realizar una aplicacion sencilla mediante la cual una unidad de mi empresa realice un reporte de algunos parametro medibles dentro de un parte diario que se entrega a los jefes de la misma la idea esencial es la siguiente
cuando se ejecute la aplicacion la se mostrara un datatimerpicker en el que el user escojera la fecha en la que elabora el parte de ahi en un dblookupcombobox escojera la unidad a la que pertenece a continuacion en otro dblookupcombobox escojera el nombre del user que elabora el parte esto es teniendo en cuante que ese user pertenece a esa unidad por lo tanto en el primer dblookupcombobox cuando escoja la unidad a la que pertenece le apareceran en el segundo dblookupcombobox los nombres de los trabajadores de esa unidad para ahorar tiempo ahora
las tablas que contienen esta informacion estan hecha con la herramienta de delphi database desktop por qe esto por que la misma te crea ficheros de paradox pequeños que facilmente saldria de la maquina cliente a la servidora ahora cuando el user haga esto sencillamente llenara unos datos como incidencias del dia, consumo electrico, propina entregada cosas asi para que cuando llene esto la informacion se guarde en una tabla reporte para que mediante un boton el user de enviar y esa tabla salga desde el cliente hasta una direccion de correo en el server donde se le dara el tratamiento adecuado entiendes lo que quiero hacer?? si me puedes ayuda en esto escribeme a mi correo personal si lo deseas asi no ponemos mas en contacto y quizar te pueda enviar parte de lo que he hecho si este reporte lo pudiera enviar como una hoja de excell seria lo ideal pero ya ves estoy en el inicio de esto asi que espero me ayudes y gracias de nuevo cualquier idea que se te ocurra no dudes es escribir para aca.

joelphi 18-02-2009 06:53:17

Ok..
 
Pues mira.. Creo que lo quieres desarrollar si es algo mas o menos grande.. yo actualmente estoy un poco ocupado.. Ademas no soy tan experto en delphi (Recuerda que soy estudiante,Programador jr..:D) Pero si deceas que te ayude en lo que pueda pues nos aventamos va??...

Ademas quisiera saber si estas desarrollando Orientado a Objetos 100%.. o Utilizas Componentes desde la interfaz Para las Conexiones con la DB..seria un buen punto..

y sobre el proyecto que estas realizando, me parece que ya he visto algo parecido...

Espero el correo por este medio...

Saludos¡¡:)

yorgelis 18-02-2009 17:01:44

asi si
 
mira me parece que nos podemos poner de acuerdo yo soy ingeniero en inf lo que hace muchisimo tiempo que no programo en delphi y es la primera vez que uso el BDE, para este tipo de aplicaciones, no uso objetos practicamente debido a que cuando creas una aplicacion usando el asistente del BDE el mismo incluye dentro de la aplicacion los componentes necesarios para manejar los datos de su BD casi siempre son edits y labels a no ser que crees una forma principal ahora lo que quiero son ideas de como realizar el trabajo mas sencillo por que lo que tengo pensado hasta ahora lo conoces dime si puedes ayudarme en eso?
si pudieras echarle un vistazo a esto seria de gran ayuda por que por aca no tengo mucho tiempo para estudiar con todo el trabajo bueno futuro ingeniero espero me ayudes y gracias.

joelphi 18-02-2009 19:50:45

Ok
 
Bueno.. Siendo asi mi correo es velocirraptor79@hotmail.com y la idea que tengo sobre tu aplicacion es buena y si no es buena la hacemos buena...

A pero tambien trabajo y estudio.. tendre que darme un tiempo.

Aaa por cierto estudio Lic. en informatica..

Saludos¡¡


La franja horaria es GMT +2. Ahora son las 05:44:46.

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