PDA

Ver la Versión Completa : ¿Como hacer que un combobox lea datos de la tabla2 y se puedan guardar en la tabla1?


Yasnet
30-10-2008, 19:34:53
Hola soy nuevo en este foro, espero y m ayuden con mi problema:)
Estoy trabajando con Delphi 7 y mySQL.
la base de datos se llama Principal
la tabla 1 se llama Registro
la tabla 1 cuenta con los siguientes campos:
-Clave del practicante
-Nombre
-Apellido paterno
-Apellido materno
-Nivel estudiantil
-Cuenta de escuela
-Semestre
-Nombre del Proyecto
-Nombre del Tutor
-Fecha Inicio
-Fecha Final
-Estatus

la tabla 2 se llama Catalogo de Escuelas
la tabla2 cuenta con los siguientes campos:
-Cuenta de Escuela
-Descripcion de Escuela

Delphi y mySQL ya estan conectados gracias al ODBC
En el programa estoy utilizando:
Table1-->Databasename:Principal
Tablename:Registro
Active:True
Datasource1-->Dataset:Table1

Table2-->Databasename:Principal
Tablename:Catalogo de Escuelas
Active:True
Datasource2-->Dataset:Table2

El programa se divide en 2:
-Registro de nuevos usuarios
-Editar el catalogo de escuelas

En registro de nuevos usuarios se le pide al usuario nuevo que llene los campos que ya se han mencionado de la tabla1(Registro).
El problema ocurre que el campo Cuenta de Escuela se encuentra en las dos tablas, tanto registro como catalogo de escuelas; y estoy usando un combobox para que lea los datos de la tabla2(Catalogo de escuelas) del campo Cuenta de Escuela(por ejemplo: 01, 02, 03, etc) y que al desplegar el combo, esos datos aparescan para poder usarlos y guardarlos(dependiendo de cual dato se elija) en la tabla1(registro).
Pero solamente e conseguido que el primer dato(01) aparesca en el combo, y no se ponen los demas.
La funcion que estoy usando es:
procedure TForm1.FormActivate(Sender: TObject);
begin
combobox1.Items.Add(tabla2.fieldbyname('Cuenta_Escuela').AsString);
end;

Esto lo hise para que los datos de cuenta de escuela de la tabla catalogo de escuelas se agreguen al combobo, pero solamente se agrega el primer dato.
Alguien me prodría decir por que o que estoy haciendo mal?, se los agradecería:).

coso
30-10-2008, 21:23:02
Hola, pasa eso porque le estas añadiendo tansolo el campo del elemento que tienes activo. Para hacerlo correctamente, deberias hacer algo como


Tabla1.First;
for i := 0 to Tabla1.RecordCount - 1 do
begin
ComboBox.Add(Tabla1.FieldByName('CAMPO').Asstring);
Tabla1.Next;
end;


Ahora bien, ya existe un componente que hace eso (DBComboBox en la pestaña DataControls) te recomiendo que le eches un vistazo. Saludos.

Caro
31-10-2008, 00:10:36
Hola Yasnet, también lo puedes hacer con ciclo While.


Tabla2.First;
While Not Tabla2.Eof do
begin
ComboBox.Add(Tabla2.FieldByName('Cuenta_Escuela').Asstring);
Tabla2.Next;
end;


Sobre el DBComboBox, yo creo que el amigo coso se refiere al DBLookupComboBox, ya que en el DBComboBox también tienes que llenarlo a mano.

Saluditos

Lepe
31-10-2008, 00:14:40
Creo que necesitas un TDBLookUpComboBox, mira en la ayuda y en foro, seguro que encuentras como usarlo.

Saludos

Yasnet
31-10-2008, 00:22:32
Muchas gracias Caro y a los demas, me acaban de sacar de un problema el cual ya me tenía loco, el combobox por fin lee todos los datos :) grax.