|
0 / 0 / 1
Регистрация: 28.12.2018
Сообщений: 21
|
|
MS Access Как лучше оформить/создать добавление нового значения в зависимые поля со списком?14.03.2020, 17:56. Показов 1931. Ответов 21
Метки нет (Все метки)
Всем доброго дня!
Делаю СУБД на основе access. Первоначально создал БД в самом access'e и там же сделал форму для нее форму для ввода данных. Выглядело это примерно вот так: Там же в access'e настроил добавление зависимых друг от друга данных как видно на скриншоте сверху. Зависимые поля это Вид, специальность и задача, они выбираются поступательно, т.е. сначала выбирается вид, потом в зависимости от выбранного вида специальность, а затем в зависимости от специальности задача (ну, или по аналогии в интернете часто есть пример: страна и город, в зависимости от выбора страны) зависимость выглядит вот так: В итоге получилось сделать форму в которой можно не только выбрать данные из выпадающего списка, но и добавить новые (как видно из первого скриншота с примером новой задачи) Теперь, когда примерно представил как это все должно выглядеть, я начал разрабатывать форму в delphi. Но тут такое большое количество разных DBEdit'ов (DBLookUpComboBox, DBLookListBox), и читая описания к ним можно посчитать что каждый из них может подойти (некоторые ответы на форумах вообще предлагают работать с обычным Edit'ом) Можете посоветовать, что и как лучше бы это оформить?
0
|
|
| 14.03.2020, 17:56 | |
|
Ответы с готовыми решениями:
21
Добавление нового значения в поле со списком
|
| 14.03.2020, 20:13 | ||
|
стараться давать пользователю как можно меньше вводить что то руками (для ввода цифр - SpinEdit, для ввода даты DatePicker и тд) для отображения использовать ListView, для добавления отдельную форму
0
|
||
|
3763 / 2267 / 705
Регистрация: 29.05.2013
Сообщений: 9,622
|
|
| 14.03.2020, 22:38 | |
|
К сожалению не существует единого варианта на все случаи жизни. Частенько, новая задача порождает и новое решение. Судя по схеме, вам еще кое-что надо переделать и в первую очередь отказаться от названий полей типа "Орган/Лицо". И ваша реализация таблицы Клиент на мой взгляд несколько неудачна. Раз у вас возможны две разные сущности ФизЛицо/ЮрЛицо, то они должны быть реализованы отдельными таблицами, а таблица Клиент должна содержать только ссылку на одну из сущностей.
0
|
|
|
0 / 0 / 1
Регистрация: 28.12.2018
Сообщений: 21
|
||
| 15.03.2020, 18:52 [ТС] | ||
|
Вложение 1121855 А так уже примерно начинаю делать форму добавления, выглядит она пока так: Вложение 1121862Вложение 1121861 Использовал DBLookUpCpmbobox, а рядом разместил кнопку, на случай, если нужно будет добавить новый вид/специальность. При нажатии которой будет открываться окно с DBEdit'ом, но теперь возникает такая необходимость: чтобы при новой записи происходила проверка "есть ли уже такая запись в таблице", если есть, то не добавлять её в поле и вывести сообщение, иначе - добавить и выйти. ну т.е. выполнить проверку и запрет на повторение записи. Я понимаю что это должен быть sql запрос, но как он должен выглядеть? Еще всё ищу, да никак не найду как можно сделать условие отбора у combobox'а, чтобы при выборе определенного вида, количество записей в "специальность" уменьшилось
0
|
||
|
0 / 0 / 1
Регистрация: 28.12.2018
Сообщений: 21
|
|
| 15.03.2020, 19:03 [ТС] | |
|
0
|
|
|
0 / 0 / 1
Регистрация: 28.12.2018
Сообщений: 21
|
|
| 16.03.2020, 19:45 [ТС] | |
|
Как настроить фильтр у DBLookUpCombobox'a?
Еще появилась проблема с добавлением нового значения с поле "Специальность": если с полем "вид" можно было просто ввести новое значение, то с полем специальность нужно чтобы оно еще и добавляло внешний ключ в зависимости от вида.
0
|
|
| 16.03.2020, 21:41 | |
|
Не по теме: вроде же писал что не надо использовать DB*, а надо использовать простые компоненты + sql
0
|
|
|
Модератор
|
||
| 17.03.2020, 08:53 | ||
|
Добавлено через 1 минуту
0
|
||
|
пофигист широкого профиля
4769 / 3204 / 862
Регистрация: 15.07.2013
Сообщений: 18,609
|
||||
| 18.03.2020, 02:42 | ||||
|
Только ТС'у нужно забыть про
0
|
||||
| 18.03.2020, 07:12 | |
|
0
|
|
|
0 / 0 / 1
Регистрация: 28.12.2018
Сообщений: 21
|
|
| 19.03.2020, 16:54 [ТС] | |
|
Понял что нужно использовать Master-detail. Прочитал про него везде, и даже создал отдельный проект, чтобы как-то на примерах воссоздать подобное, но что-то вообще уже совсем голова перестает работать от непонимания. http://cadhouse.narod.ru/artic... detail.htm по сути, здесь очень понятно объяснили, но когда я решил сделать что-то по аналогии – ничего не вышло:
Саму логику master-detail я еще в работе с access кое-как понял. Можете, пожалуйста, объяснить как мне можно реализовать это на этом примере, или где тут ошибки? Т_Т
0
|
|
|
3763 / 2267 / 705
Регистрация: 29.05.2013
Сообщений: 9,622
|
|||||||||||
| 19.03.2020, 22:57 | |||||||||||
|
В дельфи реализованы 2 механизма работы с мастер-деталь - через запросы и через таблицы. Оба варианта дадут одинаковый результат, но настраиваются по разному. У вас видимо используется вариант с запросами, там имя параметра должно совпадать с именем ключевого поля, по которому организована мастер-деталь связь. Для вашего примера будет видимо так:
Для мастера:
1
|
|||||||||||
|
0 / 0 / 1
Регистрация: 28.12.2018
Сообщений: 21
|
||
| 20.03.2020, 07:17 [ТС] | ||
|
Всё заработало!Все SQL запросы были и так прописаны как Вы написали, но все заработало после этой детальки:
А если я добавлю кнопку на добавление нового города, которого нет в списке, как можно сделать подобное, чтобы он привязывал новый город к определенной стране, которую выбрал до этого. Это аналогично связано с M-D, или надо что-то другое читать?
0
|
||
|
3763 / 2267 / 705
Регистрация: 29.05.2013
Сообщений: 9,622
|
|
| 20.03.2020, 19:08 | |
|
Настроенный механизм мастер/деталь автоматом будет заполнять ключевое поле для Query_City. Вам надо просто добавить новый город, все остальное будет сделано без вашего участия.
0
|
|
|
0 / 0 / 1
Регистрация: 28.12.2018
Сообщений: 21
|
|||||||
| 21.03.2020, 08:12 [ТС] | |||||||
|
У меня для добавление новой страны/города создана отдельная форма. Но как эту форму можно сделать шаблонной. Т.е. принцип действия у нее для добавления нового поля для страны и города один, но запросы из таблиц разные. Просто не хочется для каждого поля (страна/город/улица) создавать отдельную скопированную форму лишь с разными запросами. Знаю в теории, что можно при нажатии кнопки "добавить новый город/страну" задать изменения на все ключевые запросы.
0
|
|||||||
|
0 / 0 / 1
Регистрация: 28.12.2018
Сообщений: 21
|
|||||||||||
| 21.03.2020, 10:47 [ТС] | |||||||||||
|
Это я понял, спасибо. Но не получается настроить изменение компонентов формы (Listbox,button'ы) при нажатии на предыдущей форме кнопки добавить "новый город". Я знаю как поменять их через object inspector, но как прописать изменения в коде кнопки
т.е. хочу прописать уже на следующей кнопки добавления нового города изменения на Form5. К примеру, при открытии изменить название предыдущей формы "добавление новой страны" на "добавление нового города"
Мне нужно очистить все его предыдущие значения, в которых сейчас прописаны значения для страны, и ввести новые значения для города. Пока получилось только изменить ListSource
0
|
|||||||||||
|
0 / 0 / 1
Регистрация: 28.12.2018
Сообщений: 21
|
||||||
| 22.03.2020, 07:52 [ТС] | ||||||
|
Ну думаю DBLookUpListBox не особо и важен, главное – это кнопки. Как можно прописать, чтобы при нажатии кнопки "добавить" он присвоил кнопке, которая находится на следующей форме (у которой все значения пустые) новые значения?
К примеру, у меня есть код этой кнопки:
0
|
||||||
|
0 / 0 / 1
Регистрация: 28.12.2018
Сообщений: 21
|
||||||||||||||||
| 24.03.2020, 20:03 [ТС] | ||||||||||||||||
|
В общем, нашел решение, спустя n-количество времени:
нужно прописать на главной форме процедуру этой кнопки (всё что после 9 строчки):
Добавление новой страны работает все на "отлично", при том, что добавляю я через обычный TEdit, а не через DB, как и советовали ранее. НО, такое добавление перестает работать при добавлении нового Города или улицы, так как они осуществляют связь M-D. С DBEdit'ом получается добавить таким образом данные, так как он внешний ключ города автоматически привязывает к стране, но как прописать это с обычным TEdit'ом, что нужно прописать здесь, чтобы он добавлял также ключ от выбранной страны???
0
|
||||||||||||||||
| 24.03.2020, 20:03 | |
|
Помогаю со студенческими работами здесь
20
Одномоментное добавление нового поля и его значения в таблицу Access
как лучше сделать поля со списком? Выбор значения из поля со списком, исходя из предыдущего поля со списком Как на форме при выборе значения из Поля со списком сделать автоматическое выведение значения в другое Поле? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
|
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
|
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11
— это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
|
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11
Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
|
|
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
|
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/
O1rJuneU_ls
https:/ / vkvideo. ru/ video-115721503_456239114
|
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ВВЕДЕНИЕ
Введу сокращения:
аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
|
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi
ветка по-частям.
коммит Create переделка под биомассу. txt
вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
|