lunes, 4 de septiembre de 2017

TDBLookUpComboBox 1

Cómo configurar, tanto en modo diseño como en ejecución, un DBLookUpComboBox.

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:

  1. DataSource:=DataSource1
  2. ListSource:=DataSource1
  3. DataField:='tabla_ID';
  4. KeyField:='tabla_ID';
  5. ListField:='tabla_Descrip';
El ListField es el que se muestra en el combo, puede ser cualquier campo o columna de la tabla.



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