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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 03.12.2007, 11:19   #1
фЁдОр
Форумчанин
 
Аватар для фЁдОр
 
Регистрация: 06.09.2007
Сообщений: 908
Сообщение Присвоить значение поле в DBGrid'e компоненту DBLookupComboBox2

Здравствуйте, уважаемые программисты!
Подскажите, пожалуйста, как мне реализовать следующию проблему: когда я выбираю в гриде название фимы, нужно, что бы эта фирма отобразилась в DBLookupComboBox2, но DBLookupComboBox2 тоже подключена к этойже таблице, но через разные кверика, т.е. грид подключен через ADOQuery1, а DBLookupComboBox2 через ADOQuery2. Таблица Firm, поле FirmName.
Я пробовал это сделать следующим кодом, но безуспешно:
Код HTML:
procedure TForm1.BitBtn3Click(Sender: TObject);
begin
 DBLookupComboBox2.KeyValue:=ADOQuery1.FieldValues['FirmName'];
end;
Если это грубая ошибка прошу сильно не смеятся , просто я все еще учусь!
фЁдОр вне форума Ответить с цитированием
Старый 03.12.2007, 17:36   #2
Domovoy
Форумчанин
 
Регистрация: 24.10.2007
Сообщений: 254
По умолчанию

Вообще то при правильном подключении компонентов между собой это должно работать само по себе.
Domovoy вне форума Ответить с цитированием
Старый 03.12.2007, 19:18   #3
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Почему именно в DBLookupComboBox?
В чем тайный смысл использования именно этого компонента, а не DBText, DBEdit, DBComboBox?
mihali4 вне форума Ответить с цитированием
Старый 04.12.2007, 09:51   #4
фЁдОр
Форумчанин
 
Аватар для фЁдОр
 
Регистрация: 06.09.2007
Сообщений: 908
По умолчанию

Я сейчас попробую объяснить - никакого тайного смысла здесь нет!
в DBGrid1 я отображаю все фирмы из таблицы firm c полями FirmName и Id_firm, DBGrid1 подключен через ADOQuery1->DataSourse1. Также я использую компонент DBLookupComboBox1, который подключен к этойже таблице, но через ADOQuery2 и компонент DBGrid2, который отображает товары фирм из таблицы Price c полями PriceName, Id_firm, DBGrid2 подключен через ADOQuery3->DataSourse3. DBGrid1 размещен на одной вкладке PageControl, а DBLookupComboBox1 и DBGrid2 - на другой. А теперь попытаюсь объяснить, что я хочу реализовать: нужно, что бы когда пользователь выбрал фирму в DBGrid1 и нажал на кнопку, которая размещена на этойже вкладке "Посмотреть товар этой фирмы", автоматически открыласт вторая вкладка, где размещены DBLookupComboBox1 и DBGrid2, и DBLookupComboBox1 отобразилась эта же фирма, т.е. которую выбрали DBGrid1 и в DBGrid2 отобразились товары этой фирмы.
А почему использую DBLookupComboBox1, да потому, что бы пользователь мог сдесь же выбрать другую фирму и посмотреть товар этой фирмы.
фЁдОр вне форума Ответить с цитированием
Старый 04.12.2007, 15:49   #5
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Давайте спокойно разберемся.
Во-первых, DBLookupComboBox не умеет составлять и исполнять SQL-запросы.
Во-вторых, зачем вы усложняете себе жизнь?
Зачем какие-то вкладки?
Слева расположите узенькую таблицу (DBGrid1) с названиями фирм, а справа - вторую таблицу (DBGrid2) с названиями товаров. И никаких кнопок.
По событию ADOQuery1.AfterScroll в его обработчике формируется и исполняется SQL-запрос для ADOQuery2.
Вот и все.
А DBLookupComboBox вам так таблицы подпортит...
mihali4 вне форума Ответить с цитированием
Старый 04.12.2007, 16:08   #6
фЁдОр
Форумчанин
 
Аватар для фЁдОр
 
Регистрация: 06.09.2007
Сообщений: 908
По умолчанию

Цитата:
Сообщение от mihali4 Посмотреть сообщение
DBLookupComboBox не умеет составлять и исполнять SQL-запросы.
Я с Вами не спорю, может использовался какой-либо другой компонент, но я видел программку,а точнее она у меня есть, которая это делает, т.е. я в гриде выбираю фирму и по нажатию кнопки в выпадающемся списке появляется эта фирма(в этом жесписке я могу выбрать любую другую фирму) и во втором гриде отображаются товары этой фирмы. А закладки я использую потому, что в одну форму физически не реально разместить всю информацию потому, что в таблице firm у меня более 10 полей и таблице price у меня так же более 10 полей и не реально все это отобразить в одной форме. Есть конечно вариат использовать вместо закладки вторую форму, но мне захотелось сделать закладками.

Цитата:
Сообщение от mihali4 Посмотреть сообщение
По событию ADOQuery1.AfterScroll в его обработчике формируется и исполняется SQL-запрос для ADOQuery2
Я пока не знаю как это сделать, но спасибо за идею. Попробую поискать как им воспользоваться.

Последний раз редактировалось фЁдОр; 04.12.2007 в 16:21.
фЁдОр вне форума Ответить с цитированием
Старый 04.12.2007, 16:40   #7
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Цитата:
в таблице firm у меня более 10 полей
А вы сделайте вот что.
Что является основным признаком, однозначно определяющим фирму? Правильно, ее собственное название. Вот и отображайте в дбгриде только его.
Остальные параметры (адрес, гендиректор или что там у вас) - выводите через комплект дбтекстов, расположенных под этим дбгридом. Ведь вся сразу "толпа" этих данных, как правило, не нужна. А при необходимости можно опустить взгляд ниже и увидеть всю остальную инфу по выбранной фирме.
То же самое (но в меньшей степени) можно сделать и для таблицы товаров. Допустим, артикул или прайс-код и название - в дбгриде, а описание товара (которое может и в ширину экрана не поместиться) и другие второстепенные параметры - в дбтексты.
Цитата:
Я пока не знаю как это сделать, но спасибо за идею. Попробую поискать как им воспользоваться.
Тут ничего изобретать не надо - там будет то же самое, что вы планируете сделать (или уже реализовали) в обработчике нажатия на кнопку... Кроме, естественно, переключения закладок.
mihali4 вне форума Ответить с цитированием
Старый 04.12.2007, 17:05   #8
фЁдОр
Форумчанин
 
Аватар для фЁдОр
 
Регистрация: 06.09.2007
Сообщений: 908
По умолчанию

Цитата:
Сообщение от mihali4 Посмотреть сообщение
А вы сделайте вот что.
Что является основным признаком, однозначно определяющим фирму? Правильно, ее собственное название. Вот и отображайте в дбгриде только его.
Остальные параметры (адрес, гендиректор или что там у вас) - выводите через комплект дбтекстов, расположенных под этим дбгридом. Ведь вся сразу "толпа" этих данных, как правило, не нужна. А при необходимости можно опустить взгляд ниже и увидеть всю остальную инфу по выбранной фирме.
То же самое (но в меньшей степени) можно сделать и для таблицы товаров. Допустим, артикул или прайс-код и название - в дбгриде, а описание товара (которое может и в ширину экрана не поместиться) и другие второстепенные параметры - в дбтексты.

Тут ничего изобретать не надо - там будет то же самое, что вы планируете сделать (или уже реализовали) в обработчике нажатия на кнопку... Кроме, естественно, переключения закладок.
Я привел эти закладки, в картинке должно быть более понятно почему не получится все вместить на одну форму. А DBEdit, DBLabel я и так использую.
Вложения
Тип файла: rar формы.rar (354.1 Кб, 21 просмотров)
фЁдОр вне форума Ответить с цитированием
Старый 04.12.2007, 17:07   #9
фЁдОр
Форумчанин
 
Аватар для фЁдОр
 
Регистрация: 06.09.2007
Сообщений: 908
По умолчанию

Я извеняюсь за некачественное изображение, очень спешил.
фЁдОр вне форума Ответить с цитированием
Старый 04.12.2007, 17:49   #10
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Цитата:
в картинке должно быть более понятно почему не получится все вместить на одну форму
Да как раз нет! После просмотра вашей картинки я еще больше укрепился в необходимости полной переделки интерфейса.
Я вам предложил упорядочить ваш "винегрет". Ну что ж, если вам так больше нравится...
Кстати, а почему графа единиц измерения в товарах такая широкая? Представить себе не могу такое длинное название единицы измерения...
З.Ы. Я делал очень большие базы, с очень длинными текстовыми полями, но всегда старался избегать появления горизонтального скролла в гриде.
mihali4 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
сдвиг данных в dbgrid'e на 1 вверх kate158 БД в Delphi 5 22.08.2008 22:20
Как объекту рисования (овал) присвоить значение? Град Microsoft Office Excel 8 17.07.2008 10:42
DBGridEh - поле с картинками. (как задать правильное значение) Jenya БД в Delphi 4 25.03.2008 06:26
присвоить переменной целого типа значение поля key полученное в результате выполнения SQL запроса Worms БД в Delphi 5 10.01.2008 21:07
как присвоить значение ячейки R1C1 из 1.xls, допустим какой-нибудь любой ячейке из 2.xls ? diabloskrk Microsoft Office Excel 3 08.10.2007 12:27