|
6 / 6 / 2
Регистрация: 29.11.2009
Сообщений: 100
|
|
Сделать выпадающий список в DBGrid27.05.2011, 14:00. Показов 16726. Ответов 11
Метки нет (Все метки)
Поднимаю тему.
У меня не получается сделать выпадающий список в DBGrid. Таблицы созданы в Paradox. Всего три таблицы: 1. Преподаватели (ID, Teacher_Name, Teacher_password). 2. Группы (ID, Groups). 3. Связь преподавателя с группой (ID, ID_TEACHER, ID_GROUPS). В третьей таблице хочу реализовать выпадающие списки, в которых был бы выбор группы. В парадокс создал индексы для третьей таблицы - для полей ID_TEACHER и ID_GROUPS. Также создал ссылочную целостность ID_TEACHER -> ID и ID_GROUPS -> ID. В Table Lookup сделал так Field name: ID_GROUPS. Lookup field: ID (с таблицы Группы). В делфи для третьей таблицы: Использую три компонента - DBGrid, DataSource, Table. DataSource связал, как и положено, с Table, и DBGrid с DataSource. И здесь уже непонятки: 1. Как в свойстве MasterSource компонента Table, указать связи сразу к двум полям (ID_TEACHER -> ID и ID_GROUPS -> ID) или же мне не нужно здесь для lookup поля указывать связь? 2. Допустим я указал в MasterSource только связь ID_TEACHER -> ID. Далее двойной клик по компоненту Table, затем New Field, далее вот свойство этого нового поля: Запускаю, а он мне - ошибку:
0
|
|
| 27.05.2011, 14:00 | |
|
Ответы с готовыми решениями:
11
Как сделать выпадающий список в DbGrid? Можно ли сделать выпадающий список в DBGrid? DbGrid выпадающий список |
|
6 / 6 / 2
Регистрация: 29.11.2009
Сообщений: 100
|
|
| 27.05.2011, 14:25 [ТС] | |
|
0
|
|
|
1497 / 1238 / 245
Регистрация: 04.04.2011
Сообщений: 4,363
|
|
| 27.05.2011, 14:49 | |
|
В Вашем случае нет отношения один-ко многим, поэтому связка "Мастер-детал" не нужна.
Добавлено через 2 минуты выпадающий список в гриде делается средствами самого грида (стиль колонки) и никак не зависит от каких-то там мастер-деталов. Все, включая заполнения списков для лукап-колонок и проверку правильности делается кодом.
1
|
|
|
6 / 6 / 2
Регистрация: 29.11.2009
Сообщений: 100
|
|||
| 27.05.2011, 14:59 [ТС] | |||
|
У одного преподавателя может быть несколько групп, в которых он ведёт свои предметы. Добавлено через 2 минуты
0
|
|||
|
1497 / 1238 / 245
Регистрация: 04.04.2011
Сообщений: 4,363
|
|
| 27.05.2011, 15:16 | |
|
Вы не понимаете, очевидно, смысл понятия Один-ко-многим", от которого собственно и "пляшет" мастер-детал. У Вас типичный случай многие-ко-многим через таблицу-связку.
Две Ваши основные таблицы, содержащие нативные сущности-объекты, выполняет роль "справочников", а третья - суррогатная, содержит только привязки между этим объектами. Вы, очевидно, хотите создать программу, которая позволяла бы управлять как самими этими объектами (добавлять, изменять, удалять их), так и связью между разнотипными объектами. Т.е. надо реализовать манипулирование как объектами-группами, так и объектами-преподами, но еще и тем, как "закреплены" преподаватели за группами. Т.е. у Вас ситуация когда в одной группе может быть несколько преподавателей, но и у каждого препода может бытиь несколько групп. Это - типичный случай "многие-ко-многим". Тут нет "основной" и "детальный", как например в отношении "Группа"-"студент", где мастером явно служит группа, а деталом - студент (одна группа - много студентов) Поэтому редактирование в гриде "связи" заключается в следующем: 1) выбор объекта "группа" из списка имеющихся (хотите реализовать через лукап - валяйте) 2) выбор объекта "препод" из списка имеющихся (хотите реализовать через лукап - валяйте) 3) проверка на дублирование и сигнализация о наличии оной. Все ! Где здесь мастер-детал ? Добавлено через 9 минут "Классика" отношения "Мастер-детал" - это документ "Счет-фактура". Он состоит собственно из "счета": номер, дата, получатель, отправитель... и "фактуры": списка-перечня товаров (услуг): код, наименование, ед.изм, цена, кол-во, сумма ... Строка фактуры не может существовать вне счета и одна строка не может принадлежать более чем одному счету. В этом случае для просмотра счетов фактур используется два грида: - в первом (мастере) отображается список документов-счетов - во-втором (детале) отображается состав, фактура ТЕКУЩЕГО документа. Для того, чтобы АВТОМАТИЧЕСКИ в нижнем гриде появлялась фактура того счета, на котором остановится пользователь, перемещая курсов в верхней таблице, и выполняется настройка датасетов по известной Вам схеме. При этом как в верхнем гриде, так и в нижнем при редактировании Вы можете использовать лукап-боксы для выбора значений из списков-справочников, предварительно заполненных ручками ! И между этими двумя типами связок нет никакой связи !
1
|
|
|
0 / 0 / 0
Регистрация: 07.05.2011
Сообщений: 16
|
|
| 27.05.2011, 18:48 | |
|
Используите Ehlib
0
|
|
|
1497 / 1238 / 245
Регистрация: 04.04.2011
Сообщений: 4,363
|
|
| 28.05.2011, 00:02 | |
|
И чем поможет Эхлиб ?
Лишь бы сказать ?
0
|
|
|
1263 / 706 / 62
Регистрация: 21.12.2009
Сообщений: 2,256
|
|
| 28.05.2011, 06:34 | |
|
0
|
|
|
6 / 6 / 2
Регистрация: 29.11.2009
Сообщений: 100
|
|||||||
| 28.05.2011, 08:40 [ТС] | |||||||
Т.е. выбрали, к примеру, преподавателя Иванова, а затем в другой таблице через лукап выбрали группу: Здесь единственный минус, который я вижу - заполнение PickList'а наименованиями групп, т.е. поле Groups_name заполняется не ID'ами, ведущими к первой таблице, а самими группами. У меня это сделано так:
Те 3 пункта, что выше в цитате - если их реализовывать через лукап, то это делается моим способом, либо есть получше, где будут вставляться в поле Groups_name ID'ы наименований групп?
0
|
|||||||
|
6 / 6 / 2
Регистрация: 29.11.2009
Сообщений: 100
|
|
| 28.05.2011, 08:43 [ТС] | |
|
0
|
|
|
1497 / 1238 / 245
Регистрация: 04.04.2011
Сообщений: 4,363
|
|
| 28.05.2011, 13:03 | |
|
Я здаюсь ! В дворники !
0
|
|
|
6 / 6 / 2
Регистрация: 29.11.2009
Сообщений: 100
|
|||
| 28.05.2011, 13:15 [ТС] | |||
|
0
|
|||
| 28.05.2011, 13:15 | |
|
Помогаю со студенческими работами здесь
12
DBGrid и выпадающий список
Не получается сделать выпадающий список
Как сделать выпадающий список в 1с? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога
Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
|
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
|
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога
В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
|
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
|
|
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога
Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
|
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
|
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования.
Часть библиотеки BedvitCOM
Использованы. . .
|
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога
SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
|