Для начала:
Код:
sql:= '"SELECT * FROM power WHERE [Модель] =' + Form1.DBLookupComboBox1.Text + '"';
Это действительно неверная конструкция. Правильно, синтаксически, будет как-то так:
Код:
sql:= 'SELECT * FROM power WHERE [Модель] =''' + Form1.DBLookupComboBox1.Text + '''';
Все кавычки одинарные.
Теперь надо выверять логику.
Скорее всего, из справочника выбирается 2 поля: Код и Модель. Модель показывается как текст, а внутри сидит еще и Код. Вот с кодом, скорее всего, и надо будет связывать вторую таблицу.
Кстати, если данные в этом списке не влияют ни на что, кроме фильтрации другого списка, то можно обойтись обычным ComboBox. Т.е. при открытии формы (или программы, если справочник в процессе ее работы не меняется, да и если меняется, то всегда можно работать через тот же запрос или просто его обновить) делаем так:
Код:
..
ADOQuery1 : TADOQuery; // Наш запрос на выборку справочника. Там внутри SELECT * FROM...
..
procedure TForm1.FormCreate(Sender : TObject);
begin
ComboBox1.Items.Clear;
ADOQuery1.First;
While Not ADOQuery1.Eof Do
Begin
ComboBox1.Items.AddObject(ADOQuery1.FieldByName('Модель').AsString,TObject(ADOQuery1.FieldByName('Код').AsInteger));
ADOQuery1.Next;
End;
end;
Кстати, ComboBox1 надо сделать DropDownList (вроде так).
Теперь запрос на обновление другого списка будет собираться так:
Код:
sql:= 'SELECT * FROM power WHERE [Модель] =' + IntToStr(Integer(Form1.ComboBox1.Items.Object[ComboBox1.ItemIndex]));
ЗЫ. Вроде нигде со скобками не ошибся.