PDA

Ver la Versión Completa : mostrar datos en un DBComboBox


dcidt
26-10-2005, 23:39:59
Hola gracias por su colaboracion.
Estoy con delphi5 y MySql, uso componentes Zeos para acceder a mi BD.
ya logro insertar datos usando el mySalDatabase, MySqlquery y el Datasource
El problema es el siguiente;
quiero mostrar eun DBCombobox los datos de una tabla (ej los nombres de todos los empleados de mi tabla Empleados).
con que componentes tengo q enlazar el dbcombobox, y donde tengo q poner la consulta. gracias.

roman
26-10-2005, 23:48:03
No creo que el dbcombobox sea el control adecuado. El dbcombobox sirve para editar el campo de una tabla tomando el dato de un conjunto fijo de valores que especificas en su propiedad Items. Estos valores son los que se mostrarían en el combo.

Quizá te convenga más un dblookupcombobox. Funciona igual que el dbcombobox pero los valores los toma de una tabla que especificas mediante sus propiedades ListSource, ListField y KeyField.

ListSource es un DataSource que apunta a la tabla origen (empleados en este caso), ListField es el nombre del campo que quieres mostrar en el combo (p. ej. nombre) y KeyField es el nombre del campo o campos que enlazas con la tabla que estás editando. Normalmente será la llave primaria.

En las propiedades DataSource y DataField del dblookupcombo enlazas con la tabla a editar, digamos ventas. En DataSource ponel el datasource que apunte a ventas y en DataField el nombre del campo que hace el enlace con la tabla empleados- la llave foránea.

// Saludos

dcidt
26-10-2005, 23:53:34
y no tengo q especificar la consulta en algun lado?, lo que quiero es q mi query sea dinamico y no estatico para no usar un query por cada consulta. gracias por responder tan rapido

roman
27-10-2005, 00:04:56
y no tengo q especificar la consulta en algun lado?,


Sí, pero ¿qué con eso?



lo que quiero es q mi query sea dinamico y no estatico para no usar un query por cada consulta


¿Qué tiene que ver esto con el problema en sí?

Lo siento, pero no te estoy entendiendo.

// Saludos

dcidt
27-10-2005, 00:21:04
mira, este codigo utilizo para mostrar los nombres de los empleados pero en un DBGrid.


DataBase.ZMySqlQuery1.Sql.Clear;
DataBase.ZMySqlQuery1.Sql.Add('select nombre from Empleados');
DataBase.ZMySqlQuery1.Open;

ahora quiero saber si esta consulta puedo colocarla en algun lugar del DBCombobox o para q me filtre los empleados ahi. gracias

pyanqn
31-10-2005, 15:12:16
El tema es así: Tengo que mostrar en el combo2 en cuestrion, un nombre, digamos el de una organización, "Pepito", este nombre esta en una tabla Organizacion, y cuando selecciono en otro combo1, y elijo Juancito, quiero que se altualice el combo2 y me muestre "Pepito", y si elijo "Juancito" en combo1 que aparezca la organizacion correspondiente a juncito, y así.

Intente hacer:
Combo2.text:= el campo en el dataset que esta ligado al combo1
pero no se puede asignar nada, sale un error de solo lectura. La propiedad ReadOnly del combo está a false.

Ademas, lo que le intentaba asignar a combo2 es la clave foranea en combo1(bueno la tabla a la que apunta el combo1).

Otra que se me ocurre, filtar buscando a "Pepito"... en la tabla de organizacion y luego, que se muestre en el combo2 "pepito", pero!!!!

gama_blind
06-01-2007, 11:15:09
Buen dia a mi me sucede lo mismo cuando quiero que sa dinamico el Query(DBTables), me refiero a dinamico por ejemplo en un DBLookupcombobox meto un Query y lo que quiero que despligue depende de lo que seleccione en el DBLookupcombobox ya que selecciono ejecuta lo siguiente....:rolleyes:

ca:= IntToStr(QSMCActivos['ID_CURSO'])
QSMCActivosAL.Close;
QSMCActivosAL.SQL.Clear;
cad:='SELECT DISTINCT AL.ID_ALUMNO,AL.NOMBRE_ALUMNO,AL.APP_ALUMNO,AL.AMM_ALUMNO,TAL.DESCRIPCION_TIPO_ALUMNO,IC.ID_CURSO,IC .CALIFICACION_CURSO ';
cad:= cad + ' FROM ALUMNOS AL, TIPO_ALUMNOS TAL, INTEGRANTES_CURSOS IC ';
cad:= cad + ' WHERE AL.ID_ALUMNO=IC.ID_ALUMNO ';
cad:= cad + ' AND AL.T_ALUMNO=TAL.T_ALUMNO';
cad:= cad + ' AND IC.ID_CURSO IN '+ ca +' ORDER BY APP_ALUMNO;';
//showMessage(cad);exit;

try
begin
QSMCActivosAL.SQL.Add(cad);
QSMCActivosAL.ExecSQL;
QSMCActivosAL.Active := False;
QSMCActivosAL.Active := True;
end
except
end;

en el momento que ejecuta QSMCActivosAL.Active := True; ahi es donde me sale el error...

espero y te sirva algo,, el problema aqui es que en ciertos modulos de mi sistema si me funciona y en otros me sale error de Error [Oracle][ODBC]restricted data type attribute violation (http://www.clubdelphi.com/foros/showthread.php?p=175737#post175737)

MMTA EL PROBLEMA EN MI CASO ES QUE UN CAMPO DE MI TABLA ESTA VACIO (CALIFICACION_CURSO),,, LLENE TODOS LOS CAMPOS DE MI TABLA Y ME LO DESPLEGO SIN PROBLEMAS...
SABEN COMO PUEDO VALIDAR QUE EL EL dbGRID ME ACEPTE CAMPOS VACIOS? O ES PROBLEMA DE ORACLE?