Вобщем сделал я простенький пример:
Первая выборка по производителю, вторая выборка по типу, третяя выборка по цвету.
Есть
3 производителя ручек. Каждый производит
2 типа (гелевые и капилярные). В каждом типе производится по
3 цвета. Итого в БД получается
18 ручек.
Что происходит когда я запускаю выборку:
Допустим выбираю производителя. Начинаю выбирать тип ручки, и у меня как бы производитель не учитывается, показывает все ручки одного типа, без учета производителя, с цветом тоже самое - без учета производителя и типа.
Подскажите какой момент я недоработал?
PHP код:
procedure TForm1.FormCreate(Sender: TObject);
var Str1, Str2, Str3: String;
begin
Query2.SQL.Clear;
Query2.SQL.Add('SELECT * FROM Pros');
Query2.Open;
ComboBox1.Clear;
while not Query2.Eof do
begin
Str1:=Query2.FieldByName('ProizvodName').AsString;
ComboBox1.Items.Add(Str1);
Query2.Next;
end;
ComboBox1.Items.Add('Все производители');
ComboBox1.ItemIndex:=ComboBox1.Items.Count-1;
begin
Query3.SQL.Clear;
Query3.SQL.Add('SELECT * FROM Types');
Query3.Open;
ComboBox2.Clear;
while not Query3.Eof do
begin
Str2:=Query3.FieldByName('TypeName').AsString;
ComboBox2.Items.Add(Str2);
Query3.Next;
end;
ComboBox2.Items.Add('Все типы');
ComboBox2.ItemIndex:=ComboBox2.Items.Count-1;
begin
Query4.SQL.Clear;
Query4.SQL.Add('SELECT * FROM Colors');
Query4.Open;
ComboBox3.Clear;
while not Query4.Eof do
begin
Str3:=Query4.FieldByName('ColorName').AsString;
ComboBox3.Items.Add(Str3);
Query4.Next;
end;
ComboBox3.Items.Add('Все цвета');
ComboBox3.ItemIndex:=ComboBox3.Items.Count-1;
end;
end;
end;
procedure TForm1.ComboBox1Change(Sender: TObject);
var CurID1: Integer;
begin
Query1.Close;
Query1.SQL.Clear;
Query1.SQL.Add('SELECT * FROM Ruchkas ');
if ComboBox1.ItemIndex < ComboBox1.Items.Count-1 then
begin
Query1.SQL.Add('WHERE ProizvodID=:pProizvodID');
Query2.Locate('ProizvodName',ComboBox1.Text,[ ]);
CurID1:=Query2.FieldByName('ProizvodID').AsInteger;
Query1.Params[0].AsInteger:=CurID1;
Query1.ExecSQL
end;
Query1.Open;
end;
procedure TForm1.ComboBox2Change(Sender: TObject);
var CurID2: Integer;
begin
Query1.Close;
Query1.SQL.Clear;
Query1.SQL.Add('SELECT * FROM Ruchkas ');
if ComboBox2.ItemIndex < ComboBox2.Items.Count-1 then
begin
Query1.SQL.Add('WHERE TypeID=:pTypeID');
Query3.Locate('TypeName',ComboBox2.Text,[ ]);
CurID2:=Query3.FieldByName('TypeID').AsInteger;
Query1.Params[0].AsInteger:=CurID2;
end;
Query1.Open;
end;
procedure TForm1.ComboBox3Change(Sender: TObject);
var CurID3: Integer;
begin
Query1.Close;
Query1.SQL.Clear;
Query1.SQL.Add('SELECT * FROM Ruchkas ');
if ComboBox3.ItemIndex < ComboBox3.Items.Count-1 then
begin
Query1.SQL.Add('WHERE ColorID=:pColorID');
Query4.Locate('ColorName',ComboBox3.Text,[ ]);
CurID3:=Query4.FieldByName('ColorID').AsInteger;
Query1.Params[0].AsInteger:=CurID3;
end;
Query1.Open;
end;
end.