Тема: БД и Delphi
Показать сообщение отдельно
Старый 18.12.2005, 23:44     # 1
SteFF
Junior Member
 
Аватар для SteFF
 
Регистрация: 27.01.2005
Адрес: Пенза-City
Сообщения: 68

SteFF Путь к славе только начался
БД и Delphi

Люди знающие подскажите!
Опыта работы с БД - вапще никакого.. ((((
Ситуация такая:
Есть три таблицы:
1) Комплектующие(kompl.db) - ID, Тип(число), ПРоизводитель(число), Модель(строка), Цена($)
2) Тип комплектующей(types.db) - ID, Название (Процессор, Мать, винт и т.д.)
3) ПРоизводитель(manuf.db) - ID, Название (ASUS, MSI и т.д.)
На форме в TreeView я выбираю типа комплектующей (Проц, мать и пр.)
Далее должен делаться запрос к базе данных, чтоб он по ТИПУ комплектующей (проц и пр.) взял её ID из базы. Этот ID присваевается переменной:
Код:
Procedure TypeSel2;
BEGIN
  With Form1 do
    With Query4 do
      begin
        Close;
        SQL.Clear;
        SQl.Add('SELECT id FROM types.db WHERE KName='+ktype);
        Open;
        DevID:=Query4.FieldValues['id'];
      end;
END;
После этого я делается еще один запрос к БД, в котором по этом ID из БД выбираются производители, которые собственно и производят такой типа комплектующих:
Код:
  With Query1 do
    begin
      Close;
      SQL.Clear;
      SQL.Add('SELECT mname FROM manuf.db WHERE id IN'+
      '(SELECT DISTINCT manuf FROM kompl.db WHERE type='+IntToStr(DevID)+')');
      Open;
    end;
  While not Query1.EOF do
    begin
//      DBComboBox1.Items.Add(Query1.FieldByName('mname').AsString);
      ComboBox1.Items.Add(Query1.FieldByName('mname').AsString);
      Query1.Next;
    end;
end;
Т.е. заполняется ComboBox
После этого я должен выбрать в этом списке желаемого производителя..
Наприм это будет ASUS
Я его выбираю. То что я выбрал присваивается переменной mnf. Делается запрос к БД и выбираются уже модели комплектующих этого производителя (этот кусок проги я еще не написал..)
И после того как я выбиру модель, он мне должен выдать цену в Edit.
ПОтом я выбираю несколько устройств, добавляя каждое из них в таблицу. И у меня по идее должно подсчитываться стоимость компа... вот..
Я решил не использовать компоненты DBCOmboBox, т.к. после выбора в нем чеголибо и щелчке вне его, то что выбрано - исчезает.. у меня лично так.
Вопщем я повис вот тут:
Код:
Procedure TypeSel2;
BEGIN
  With Form1 do
    With Query4 do
      begin
        Close;
        SQL.Clear;
        SQl.Add('SELECT id FROM types.db WHERE KName='+ktype);
        Open;
        DevID:=Query4.FieldValues['id'];
      end;
END;
Не присваивается ей то значение (ID), которе у ktype(проц, мать и пр.) в таблице types.db
SteFF вне форума