Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.01.08;
Скачать: CL | DM;

Вниз

Проблема с БД в Дельфи   Найти похожие ветки 

 
x-steff   (2005-12-18 22:49) [0]

Люди знающие подскажите!
Опыта работы с БД - вапще никакого.. ((((
Ситуация такая:
Есть три таблицы:
1) Комплектующие(kompl.db) - ID, Тип(число), ПРоизводитель(число), Модель(строка), Цена($)
2) Тип комплектующей(types.db) - ID, Название (Процессор, Мать, винт и т.д.)
3) ПРоизводитель(manuf.db) - ID, Название (ASUS, MSI и т.д.)
На форме в TreeView я выбираю типа комплектующей (Проц, мать и пр.)
Далее должен делаться запрос к базе данных, чтоб он по ТИПУ комплектующей (проц и пр.) взял её ID из базы. Этот ID присваевается переменной:
[CODE]
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;
[/CODE]
После этого я делается еще один запрос к БД, в котором по этом ID из БД выбираются производители, которые собственно и производят такой типа комплектующих:
[CODE]
 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;
[/CODE]
Т.е. заполняется ComboBox
После этого я должен выбрать в этом списке желаемого производителя..
Наприм это будет ASUS
Я его выбираю. То что я выбрал присваивается переменной mnf. Делается запрос к БД и выбираются уже модели комплектующих этого производителя (этот кусок проги я еще не написал..)
И после того как я выбиру модель, он мне должен выдать цену в Edit.
ПОтом я выбираю несколько устройств, добавляя каждое из них в таблицу. И у меня по идее должно подсчитываться стоимость компа... вот..
Я решил не использовать компоненты DBCOmboBox, т.к. после выбора в нем чеголибо и щелчке вне его, то что выбрано - исчезает.. у меня лично так.
Вопщем я повис вот тут:
[CODE]
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;
[/CODE]
Не присваивается ей то значение (ID), которе у ktype(проц, мать и пр.) в таблице types.db
Помогите пожалуйста..


 
Alexandr Bydantcev ©   (2005-12-19 05:10) [1]

Тэкс... А что в результате запроса получается?
Ежели ktype - строка, то надо нарисовать апострофы вокруг.


 
Desdechado ©   (2005-12-19 10:46) [2]

использовать параметры - это правильнее и удобнее со всех точек зрения


 
Sergey13 ©   (2005-12-19 10:54) [3]

2x-steff   (18.12.05 22:49)
1. А как ты по структуре "types.db - ID, Название" строишь дерево?
2. Зачем запрашивать ID из БД если таблица у тебя уже на клиенте (раз ты его выбираешь)?



Страницы: 1 вся ветка

Текущий архив: 2006.01.08;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.018 c
4-1130866310
Павлик Морозов
2005-11-01 20:31
2006.01.08
Отображение текста TrueType, минуя функции GDI


2-1135016134
Viktop
2005-12-19 21:15
2006.01.08
Разбить текстовый файл


2-1134895720
Сафаров
2005-12-18 11:48
2006.01.08
иконки в MessageBox


14-1134551437
Narik
2005-12-14 12:10
2006.01.08
Удаление папки...


6-1127472664
Shamansky
2005-09-23 14:51
2006.01.08
PHP и Delphi