Para este ejemplo se da por hecho que ya hay una conexión con una base de datos, una Query y DataSource. Para este caso utilizo para ellos los componentes de Zeos Lib.
En tiempo de diseño:
Con la base de datos conectada, el query activo y un DBLookUpComboBox1 en el Form, desde el inspector de objetos vamos configurar el combo en este orden:
- DataSource:=DataSource1
- ListSource:=DataSource1
- DataField:='tabla_ID';
- KeyField:='tabla_ID';
- ListField:='tabla_Descrip';
En modo diseño nuestro combo ya muestra los datos. No hemos escrito ni una sola línea de código, solo una consulta SQL.
En tiempo de ejecución:
Me ha pasado y todavía leo en los foros, que el combo se ve bien pero a la hora de ejecutar el programa, no se carga; o cómo hacer todo en tiempo de ejecución. Pues veamos el mismo caso:
unit Unit1;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, db, FileUtil, Forms, Controls, Graphics, Dialogs,
DbCtrls, ZConnection, ZDataset;
type
{ TForm1 }
TForm1 = class(TForm)
DataSource1: TDataSource;
DBLookupComboBox1: TDBLookupComboBox;
ZConnection1: TZConnection;
ZQuery1: TZQuery;
procedure FormCreate(Sender: TObject);
private
{ private declarations }
public
{ public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.lfm}
{ TForm1 }
procedure TForm1.FormCreate(Sender: TObject);
begin
ZConnection1.Database:='datos.db';
ZConnection1.Connect;
ZQuery1.SQL.Text:='SELECT * FROM turnos;';
ZQuery1.Open;
DBLookupComboBox1.DataSource:=DataSource1;
DBLookupComboBox1.ListSource:=DataSource1;
DBLookupComboBox1.DataField:='turid';
DBLookupComboBox1.KeyField:='turid';
DBLookupComboBox1.ListField:='turdesc';
end;
end.
Primero que nada, desde el inspector de objetos asegurarse de tener desconectada la base de datos y el SQL del query en blanco.
Es importante seguir un orden, primero establecer la conexión con la base de datos, luego definir la consulta SQL y paso siguiente abrirla, si es mediante Open mejor, el código es más claro, además active:=True lo único que hace es invocar a Open y en False, a Close.
Lo que sigue es lo mismo que hicimos desde el inspector de objetos y en el mismo orden.
No hay comentarios:
Publicar un comentario