Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   MySQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=21)
-   -   ¿Como hacer que un combobox lea datos de la tabla2 y se puedan guardar en la tabla1? (https://www.clubdelphi.com/foros/showthread.php?t=61224)

Yasnet 30-10-2008 19:34:53

¿Como hacer que un combobox lea datos de la tabla2 y se puedan guardar en la tabla1?
 
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

Código Delphi [-]
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.

Código Delphi [-]
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.


La franja horaria es GMT +2. Ahora son las 14:26:24.

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