Форум программистов, компьютерный форум, киберфорум
Delphi: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.86/81: Рейтинг темы: голосов - 81, средняя оценка - 4.86
3 / 3 / 0
Регистрация: 27.11.2010
Сообщений: 54

Delphi: Combobox в DBGrid

24.03.2011, 16:34. Показов 15325. Ответов 23
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
В общем есть такая проблема. Есть 2 таблицы. В одной из ячеек нужно сделать выпадающий список (комбобокс), который берётся из одного из полей второй таблицы.

Гугл конечно помог, всё сделала по этой схеме:

1. Вызываем редактор полей Table1, Click мышой
2. В редакторе полей правой кнопкой и New Field -> видим диалог
3. В диалоге
Name --> Profession (или как Вы его обзовете)
Type --> string
Size --> длина наименования профессии в Table2
FieldType --> Lookup
KeyFields --> имя числового поля Table1, в которое связывает нас с
Table2 (например prof_id)
Dataset --> откуда мы будем брать строки оп
LookupKeys --> Ключевое поле Table2
ResultField --> наименование профессии из Table2
Жмем ОК
Теперь в DBGrid для Table1 данное поле будет содержать выпадающий список
с профессиями из Table2
Но списка как не было так и нет! При создании новой записи в первой таблице, поле, где должен быть список - просто заполняется одним из значений поля второй таблицы. А списка раскрывающегося НЕТ.
Ошибок программа так же не выдаёт.

Помогите пожалуйста, я уже не знаю, что и думать

Для пущей ясности прилагаю пример, на котором сама пытаюсь это сделать.
Вложения
Тип файла: rar Proga.rar (324.5 Кб, 308 просмотров)
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
24.03.2011, 16:34
Ответы с готовыми решениями:

Delphi БД - ComboBox, TreeView и DBGrid
Всем добрый день. Товарищи помогите решить задачу из за недостаточного знания языка мне ее не подвластно решить, надежда только на Вас....

Delphi (объединение combobox и 2 dbgrid)
Нужна помощь, как объединить combobox и 2 dbgrid как на скриншотах. 1. http://rghost.ru/7dRcGRSZm.view 2....

Выбор данных в таблице DBGrid с использованием компонента combobox (Delphi 7)
У меня есть некая DBGrid таблица в которой нужно изменять данные столбика "Повар". Я решил сделать так, вставил компонент PopupMenu,...

23
3 / 3 / 0
Регистрация: 27.11.2010
Сообщений: 54
28.03.2011, 14:31  [ТС]
Студворк — интернет-сервис помощи студентам
SAMZ, хорошо, я подожду сколько нужно, не торопитесь)
0
1263 / 706 / 62
Регистрация: 21.12.2009
Сообщений: 2,256
28.03.2011, 15:11
Lacrimossa, Я попытался промоделировать у себя Вашу ситуацию. Точной модели сделать не могу, т.к с парадоксом не работаю и устанавливать его не буду. Сделал на таблицах FireBird. В таблице было ключевое поле ID и текствое NAME с атрибутом not null (не допускать пустых значений). При этом, если в событии AfterInsert я вставлял
UpdateSQL1.Apply(ukInsert);
немдленно генерировалось сообщение об ошибке, что неудивительно, т.к. мы пытаемся фиксировать на сервере новую запись с null значением в полях, которые этого не допускают
Поэтому я вставил в этот обработчик
Delphi
1
2
3
4
5
6
procedure TForm1.Query1AfterInsert(DataSet: TDataSet);
begin
  Query1ID.AsInteger := -1;
  Query1NAME.AsString := 'новая запись';
  UpdateSQL1.Apply(ukInsert);
end;
и это отработало нормально. Т.е. новая запись вставиласи с ключевым полем -1 и полем NAME = 'новая запись'
Мне трудно сказать, как это поведет у Вас, т.к. не знаю, как в подобных случаях ведут себя в парадоксе автоинкрементальные поля. Поэкспериментируйте. Попробуйте не указывать ключевое поле вообще.
И ешк одно, когда сейчас поработал с UpdateSQL вспомнил одну интереснюю фишку. Если по этому объекту щелкнуть правой клавилей мыши, то можно взвать встроенный редактор UpdateSQL Editor.
В этом редакторе можно выьрать ключевое поле и редактируемые поля и после нажатия на generate SQL тексты SQL сгенерируются сами. Обратите внимание, что тексты немного отличаются от моих рекомендаций. В некоторых SQL имена параметров образуются с префиксом OLD
1
3 / 3 / 0
Регистрация: 27.11.2010
Сообщений: 54
28.03.2011, 17:56  [ТС]
SAMZ, спасибо, отчасти это помогло.
Точнее для Query1AfterInsert - всё успешно прописалось. Но обновления и вставка новой записи через раз проходят с глюками - часто пишет ту же ошибку "Update failed"
Плюс изменения не сохраняются почему-то в БД ни в одной из таблиц.

Пыталась прописать то же самое для Query2AfterInsert, но он "ругается:
Code
1
2
3
4
 
Query2ID.AsInteger := -1;
Query2Predm.AsString := 'новая запись';
 UpdateSQL2.Apply(ukInsert);
А ещё какая-то ерунда происходит. В первой таблице в поле ID почему-то ставится значение ID из второй таблицы в соответствии с выбранным предметом.

Плюс, в той же второй таблице почему-то не работает автоинкремент - надо самой задавать значения в поле ID. В общем с ID в обоих случаях - глюки.

Сейчас ещё попробую поколдовать.
0
3 / 3 / 0
Регистрация: 27.11.2010
Сообщений: 54
29.03.2011, 22:46  [ТС]
SAMZ, я по вашему совету воспользовалась редактором UpdateSQL, ошибок теперь не выдаёт, но вот с ID-полями проблемы.
При удалении счётчик не сбрасывается например. и в 1 таблице в поле ID присваивается значение ID выбранного предмета из второй.
В общем в обеих таблицах с этими ID какая-то неразбериха творится...

И изменения в первой таблице не сохраняются почему-то...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
29.03.2011, 22:46

В чем разница компонентов Delphi 7 DBGrid и Delphi 10.3 TDBGrid?
Смотрю урок по Delphi 7, там использовался компонент DBGrid, а у меня 10,3 версия и там вместо DBGrid стоит TDBGrid. Это что, обновленная...

DBGrid и ComboBox
Мой код формы: unit Unit18; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, ...

DBGrid и ComboBox ...
Всем доброго времени суток. У меня вот такой вопрос: как сделать, чтобы при выборе некоторого элемента в ComboBox, выделялась...

Combobox в DBGrid
Есть 2 таблицы в MS Access. Как сделать чтобы в определенном столбце данные отображались в виде combobox. Данные должны подгружаться из 2-й...

ComboBox в DBGrid
Доброго времени суток! Есть две таблицы, связанные ОДИН-КО-МНОГИМ Надо организовать ввод значение поля в таб1 с помощь ComboBox,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
24
Ответ Создать тему
Новые блоги и статьи
Про "Windows must die!"
kumehtar 04.11.2026
Знаете, чет накатило. . . . Когда-то это было почти боевым кличем: мол, нормальный человек сидит на DOS, OS/ 2 или Linux, а вот это вот - Must Die. А теперь человек произносит «мастдай» с усмешкой - и. . .
Красочные поля с номером страницы svg+background-image
russiannick 04.11.2026
Красочные поля с номером страницы не менее важны чем в эпоху бумажных книг. Посему спешу представить почтеннейшей публике этот важный инструмент который эти поля и формирует. В процессе разработки. . .
Вступаем в новую фазу генерации favicons, векторную.
russiannick 02.11.2026
Теперь нет нужды скрывать что используется простой svg. Исходный код изображения помещаем в поле и жмем кнопку. Исходник преобразуется в вид корректный для помещения в favicon или в url(). Нажатие. . .
Генератор паролей (вариант №4)
Maks 01.11.2026
После публикации 3-го варианта генератора паролей, разослал его своим коллегам (с целью оценки), в итоге были получены следующие рекомендации: 1. Вернуть возможность использования знаков | 1 l I;. . .
Генератор паролей (вариант №3)
Maks 30.10.2026
Финальная версия генератора паролей 1С. Доработка решения в этот раз коснулась только визуальной части, а именно, добавлен реквизит ДопПараметры (тип Булево), который скрывает/ отображает реквизиты:. . .
Магическое мышление и магия, современная наука не отличима от магии (говорит ИИ Джемени)
zorxor 30.10.2026
Джемени, расскажи, пожалуйста, что такое магическое мышление, что такое магия, почему современная наука чем-то напоминает магию? Фраза «Любая достаточно развитая технология неотличима от магии». . .
За какое время ИИ может подобрать пароль по хешу (рассказывает Джемени ИИ)
zorxor 30.10.2026
Расскажи, Джемени, если известен хэш МД5, например, за сколько ИИ сможет подобрать соответствующий пароль? Искусственный интеллект (ИИ) может подобрать простой или средний по сложности пароль по. . .
Кто убил Suno? Почему наше солнышко погасло? (диалог с ИИ Джемени)
zorxor 30.10.2026
Как убивали Suno. Хронология. «Убийство» музыкальной нейросети Suno — это затяжной процесс, в котором технологический хайп стартапа разбился о жесткую реальность судебных исков от гигантов. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru