Доброго всем времени суток!
Бьюсь над решением следующей задачи, но пока, что-то ничего не получается. Есть база данных, состоящая из двух таблиц: NAME и STEP (см. вложения) Связь м/у табл. по полям IndexName и IndexName1.
Вот код с которым работаю:
Код:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, DBCtrls;
type
TForm1 = class(TForm)
ComboBox1: TComboBox;
ComboBox2: TComboBox;
procedure FormActivate(Sender: TObject);
procedure ComboBox1Click(Sender: TObject);
procedure ComboBox1Change(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
type
TINDEX = class
INDEX: integer;
end;
var
Form1: TForm1;
implementation
uses Unit2;
{$R *.dfm}
procedure TForm1.ComboBox1Change(Sender: TObject);
begin
with unit2.DataModule2.ADOQuery1 do
begin
unit2.DataModule2.ADOQuery1.Active:= False;
unit2.DataModule2.ADOQuery1.SQL.Clear;
unit2.DataModule2.ADOQuery1.SQL.Add('select * from name, step');
unit2.DataModule2.ADOQuery1.SQL.Add('where name = combobox1.Text');
unit2.DataModule2.AdoQuery1.Parameters[0].AsInteger := TCod(ComboBox.Items.Objects[ComboBox.ItemIndex]).Cod;
unit2.DataModule2.ADOQuery1.Active:= True;
combobox2.Items.Clear;
while not unit2.DataModule2.ADOQuery1.Eof do begin
combobox2.Items.Add(unit2.DataModule2.AdoQuery1.FieldByName('step').AsString);
unit2.DataModule2.ADOQuery1.Next;
end;
end;
end;
procedure TForm1.ComboBox1Click(Sender: TObject);
begin
ComboBox2.SetFocus;
end;
procedure TForm1.FormActivate(Sender: TObject);
const
ADOProvider='Provider=Microsoft.Jet.OLEDB.4.0; Data Source=';
var
path:string;
PINDEX: TINDEX;
begin
Path:=Application.ExeName;
Path:=ExtractFileDir(Path);
if Path[Length(Path)]<>'\' then Path:=Path+'\'+'DataBase'+'\';
unit2.DataModule2.ADOConnection1.ConnectionString:=ADOProvider+Path+'Base.mdb';
unit2.DataModule2.ADOConnection1.Open;
unit2.DataModule2.ADOTable1.Active:=True;
ComboBox1.Items.Clear;
unit2.DataModule2.ADOTable1.First;
while not unit2.DataModule2.ADOTable1.EOF do
begin
PINDEX := TINDEX.Create;
PINDEX.INDEX := unit2.DataModule2.ADOTable1.FieldByName('IndexName').AsInteger;
ComboBox1.Items.AddObject(unit2.DataModule2.ADOTable1.FieldByName('Name').AsString, PINDEX);
unit2.DataModule2.ADOTable1.Next;
end;
if (combobox1.Items.Count > 0) then Combobox1.ItemIndex := 0;
end;
end.
Так вот, проблема именно в SQL запросе, выбор в combo1 строки с нужным значением, должен подгружать соответствующие значения в combo2. как связать индекс combo1 с табл. step и т.д. Помогите пожалуйста разобраться с запросом.
Спасибо.