unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, DBCtrls, DB, ADODB, StdCtrls;
type
TForm1 = class(TForm)
ADOConnection1: TADOConnection;
ComboBox1: TComboBox;
Label1: TLabel;
Label2: TLabel;
ADOQuery1: TADOQuery;
DataSource2: TDataSource;
DataSource1: TDataSource;
ADOQuery2: TADOQuery;
ComboBox2: TComboBox;
Label3: TLabel;
Label4: TLabel;
ComboBox3: TComboBox;
ADOQuery3: TADOQuery;
DataSource3: TDataSource;
Label5: TLabel;
Label6: TLabel;
ADOQuery4: TADOQuery;
DataSource4: TDataSource;
Label7: TLabel;
Label8: TLabel;
Memo1: TMemo;
procedure FormCreate(Sender: TObject);
procedure ComboBox1Change(Sender: TObject);
procedure ComboBox2Change(Sender: TObject);
procedure ComboBox3Change(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
id_area:String;
id_subarea:String;
id_puesto: String;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
begin
ADOQuery1.Active := False;
ADOQuery1.Active := True;
While not ADOQuery1.Eof do
begin
Combobox1.Items.Add(ADOQuery1.Fields[1].Text);
ADOQuery1.Next;
end;
ADOQuery1.Active := False;
end;
procedure TForm1.ComboBox1Change(Sender: TObject);
begin
id_area :=Combobox1.Text;
// showmessage('Hola ' + id_area);
ADOQuery2.Active := False;
ADOQuery2.SQL.Text := 'Select subarea_name FROM subarea INNER JOIN area ON area.id = subarea.area_id WHERE area_name ='+ Char(39) + id_area + Char(39);
ADOQuery2.Active := True;
Combobox2.Items.Clear;
While not ADOQuery2.Eof do
begin
Combobox2.Items.Add(ADOQuery2.Fields[0].Text);
ADOQuery2.Next;
end;
ADOQuery2.Active := False;
end;
procedure TForm1.ComboBox2Change(Sender: TObject);
begin
id_subarea :=Combobox2.Text;
// showmessage('Holasub ' + id_subarea);
ADOQuery3.Active := False;
ADOQuery3.SQL.Text := 'Select puesto_name FROM puesto INNER JOIN subarea ON subarea.id = puesto.subarea_id WHERE subarea_name ='+ Char(39) + id_subarea + Char(39);
ADOQuery3.Active := True;
Combobox3.Items.Clear;
While not ADOQuery3.Eof do
begin
Combobox3.Items.Add(ADOQuery3.Fields[0].Text);
ADOQuery3.Next;
end;
ADOQuery3.Active := False;
end;
procedure TForm1.ComboBox3Change(Sender: TObject);
begin
id_puesto :=Combobox3.Text;
// showmessage('Hola puesto ' + id_puesto);
ADOQuery4.Active := False;
ADOQuery4.SQL.Text := 'Select Puesto_descripcion FROM puesto INNER JOIN subarea ON subarea.id = puesto.subarea_id WHERE subarea_name ='+ Char(39) + id_subarea + Char(39) + ' AND puesto_name =' + Char(39) + id_puesto + Char(39);
ADOQuery4.Active := True;
// showmessage(ADOQuery4.SQL.Text);
Memo1.Clear;
Memo1.Lines.add(ADOQuery4.Fields[0].Value);
end;
end.
Explicación del programa en Delphi 7.0
- Para este programa utilice la conexión a la base de datos con el objeto TADOConnection para configurar la base de datos de Access
- El objeto TADOQuery para poder configurar un query a la base de datos, fue un objeto por cada combox y el Memo. Cada query se configura en la propiedad ADOQuery2.SQL.Text
- Utilice el objeto TDataSource para ligar cada Query
Otra opción pudo haber sido utilizar TDBMemo, TDBLookupComboBox
La ejecución del programa
Comentarios
Publicar un comentario
Dejanos tus dudas y comentarios