Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 27.10.2008, 10:09   #1
Gringo
 
Регистрация: 22.10.2008
Сообщений: 3
По умолчанию Выборка строк из таблицы по значению TDBLookupComboBox

Здравствуйте уважаемые программисты. Я ещё совсем новичок в работе с БД на дельфи, и столкнулся с такой проблемой:

задействованные лица:
т1
КодЗаказчика (ключ)
Заказчик

т2
КодДетали (ключ)
КодЗаказчика
Наименование
...

на form1 имеется TDBLookupComboBox, который берет данные из таблицы [т1.Заказчик]

на form2 имеется TDBGrid в котором посредством запроса нужно отобразить только те записи, у которых значение поля [т2.КодЗаказчика] соответствовало бы выбранному в комбобоксе.
----- Запрос:
SELECT т2.КодЗаказчика, т2.Наименование
FROM тДетали
WHERE (тДетали.КодЗаказчика=???);

попробовал подставить строку:
тДетали.КодЗаказчика=form1.DBLookup ComboBox1.KeyValue
пишет, что данный параметр не имеет значения по умолчанию...

Подскажите пожалуйста, как правильно построить строку "WHERE". Очень прошу!
Gringo вне форума Ответить с цитированием
Старый 27.10.2008, 10:15   #2
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

???:=(select КодЗаказчика from t1 where Заказчик='+QuotedStr(DBLookupComboB ox1.Text));
Коли занялись SQL запросами, нужно иметь под рукой хоть какое руководство по SQL.

Последний раз редактировалось mihali4; 27.10.2008 в 10:22.
mihali4 вне форума Ответить с цитированием
Старый 27.10.2008, 11:43   #3
Gringo
 
Регистрация: 22.10.2008
Сообщений: 3
По умолчанию

Спасибо огромное за внимание

мм.. мне ужасно стыдно за следующий вопрос, но надеюсь Вы мне поясните:

эту конструкцию я вношу в "WHERE"?

...
WHERE (select КодЗаказчика from t1 where Заказчик='+QuotedStr(DBLookupComboB ox1.Text));

а вот это место: ='+QuotedStr...
я не знаком с этой функцией если я оставляю её без апострофа, пишет "Неопределенная функция в выражении", если добавляю ' ' тоже самое.

Я так понимаю посредством этого подзапроса мы извлекаем из первой таблицы значение поля "КодЗаказчика" по отображенному значению комбобокса?
Gringo вне форума Ответить с цитированием
Старый 27.10.2008, 12:16   #4
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

1. Да. Это называется "вложенный запрос". Только я же вам обозначил, что эта строка - вместо ваших "???". А вы что написали?
2. Странно... Функция из SysUtils... У вас что, SysUtils не подключен? Она делает очень простую, но иногда полезную вещь - заключает в апострофы строку-аргумент.
3. Верно понимаете.

Последний раз редактировалось mihali4; 27.10.2008 в 18:55.
mihali4 вне форума Ответить с цитированием
Старый 28.10.2008, 05:45   #5
Gringo
 
Регистрация: 22.10.2008
Сообщений: 3
По умолчанию

Спасибо за ответ
SysUtils подключен, и сама функция работает, если допустим просто присвоить метке значение: label.Caption:=QuotedStr(DBLookupCo mboBox1.Text) -> выводит заключенное в апострофы значение.

Запрос работает (спасибо ), если вместо QuotedStr() поставить просто значение 'Нужная строка'. Но когда я подставляю QuotedStr() выдается ошибка: Неопределенная функция 'QuotedStr' в выражении. Может я делаю ошибку в синтаксисе?

Вот полный текст запроса:
Код:
SELECT тДетали.КодЗаказчика, тДетали.Наименование, тДетали.Чертеж, тДетали.Толщина, тМарки.Марка, тДетали.Гибка, тДетали.Поворот, тДетали.ИмяФайла, тДетали.Расширение, тДетали.Pic
FROM (тДетали INNER JOIN тЗаказчики ON тДетали.КодЗаказчика=тЗаказчики.КодЗаказчика) LEFT JOIN тМарки ON тДетали.КодМарки=тМарки.КодМарки
WHERE тДетали.КодЗаказчика = (SELECT тЗаказчики.КодЗаказчика FROM тЗаказчики WHERE тЗаказчики.Заказчик=QuotedStr(form1.c_zak.Text));
Помогите пожалуйста

p.s. а как на форуме в форму быстрого ответа ввести имя, к кому обращаешься? (куда кликнуть надо?) Спасибо.

Последний раз редактировалось Gringo; 28.10.2008 в 09:04.
Gringo вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
ADO, выборка из таблицы. Roof БД в Delphi 2 09.07.2008 18:51
Установка указателя в одной таблице по значению из другой Avalonix БД в Delphi 1 31.05.2008 17:20
Выборка из таблицы ivp88 БД в Delphi 5 12.01.2008 14:36
Поиск в базе по значению в Edit Arteom БД в Delphi 2 19.10.2007 22:23