Тема: SQL запрос
Показать сообщение отдельно
  #1  
Старый 26.11.2012, 10:48
kobz kobz вне форума
Прохожий
 
Регистрация: 08.06.2012
Сообщения: 12
Репутация: 10
По умолчанию SQL запрос

Доброго всем времени суток!
Бьюсь над решением следующей задачи, но пока, что-то ничего не получается. Есть база данных, состоящая из двух таблиц: 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 и т.д. Помогите пожалуйста разобраться с запросом.
Спасибо.
Изображения
Тип файла: jpg Tabl Name.JPG (23.3 Кбайт, 14 просмотров)
Тип файла: jpg Tabl Step.JPG (47.9 Кбайт, 11 просмотров)
Ответить с цитированием