|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
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 |
Форумчанин
Регистрация: 24.10.2007
Сообщений: 254
|
Вообще то при правильном подключении компонентов между собой это должно работать само по себе.
|
03.12.2007, 19:18 | #3 |
*
Старожил
Регистрация: 22.11.2006
Сообщений: 9,201
|
Почему именно в DBLookupComboBox?
В чем тайный смысл использования именно этого компонента, а не DBText, DBEdit, DBComboBox? |
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 |
*
Старожил
Регистрация: 22.11.2006
Сообщений: 9,201
|
Давайте спокойно разберемся.
Во-первых, DBLookupComboBox не умеет составлять и исполнять SQL-запросы. Во-вторых, зачем вы усложняете себе жизнь? Зачем какие-то вкладки? Слева расположите узенькую таблицу (DBGrid1) с названиями фирм, а справа - вторую таблицу (DBGrid2) с названиями товаров. И никаких кнопок. По событию ADOQuery1.AfterScroll в его обработчике формируется и исполняется SQL-запрос для ADOQuery2. Вот и все. А DBLookupComboBox вам так таблицы подпортит... |
04.12.2007, 16:08 | #6 |
Форумчанин
Регистрация: 06.09.2007
Сообщений: 908
|
Я с Вами не спорю, может использовался какой-либо другой компонент, но я видел программку,а точнее она у меня есть, которая это делает, т.е. я в гриде выбираю фирму и по нажатию кнопки в выпадающемся списке появляется эта фирма(в этом жесписке я могу выбрать любую другую фирму) и во втором гриде отображаются товары этой фирмы. А закладки я использую потому, что в одну форму физически не реально разместить всю информацию потому, что в таблице firm у меня более 10 полей и таблице price у меня так же более 10 полей и не реально все это отобразить в одной форме. Есть конечно вариат использовать вместо закладки вторую форму, но мне захотелось сделать закладками.
Я пока не знаю как это сделать, но спасибо за идею. Попробую поискать как им воспользоваться. Последний раз редактировалось фЁдОр; 04.12.2007 в 16:21. |
04.12.2007, 16:40 | #7 | ||
*
Старожил
Регистрация: 22.11.2006
Сообщений: 9,201
|
Цитата:
Что является основным признаком, однозначно определяющим фирму? Правильно, ее собственное название. Вот и отображайте в дбгриде только его. Остальные параметры (адрес, гендиректор или что там у вас) - выводите через комплект дбтекстов, расположенных под этим дбгридом. Ведь вся сразу "толпа" этих данных, как правило, не нужна. А при необходимости можно опустить взгляд ниже и увидеть всю остальную инфу по выбранной фирме. То же самое (но в меньшей степени) можно сделать и для таблицы товаров. Допустим, артикул или прайс-код и название - в дбгриде, а описание товара (которое может и в ширину экрана не поместиться) и другие второстепенные параметры - в дбтексты. Цитата:
|
||
04.12.2007, 17:05 | #8 | |
Форумчанин
Регистрация: 06.09.2007
Сообщений: 908
|
Цитата:
|
|
04.12.2007, 17:07 | #9 |
Форумчанин
Регистрация: 06.09.2007
Сообщений: 908
|
Я извеняюсь за некачественное изображение, очень спешил.
|
04.12.2007, 17:49 | #10 | |
*
Старожил
Регистрация: 22.11.2006
Сообщений: 9,201
|
Цитата:
Я вам предложил упорядочить ваш "винегрет". Ну что ж, если вам так больше нравится... Кстати, а почему графа единиц измерения в товарах такая широкая? Представить себе не могу такое длинное название единицы измерения... З.Ы. Я делал очень большие базы, с очень длинными текстовыми полями, но всегда старался избегать появления горизонтального скролла в гриде. |
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
сдвиг данных в 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 |