Форум программистов, компьютерный форум, киберфорум
Delphi: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
0 / 0 / 0
Регистрация: 17.03.2019
Сообщений: 131

DBLookupComboBox в Forme

16.06.2022, 11:26. Показов 863. Ответов 11
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
БД на MS Access в формате .mdb
Windows 7 - 64
Delphi 7


Подключил таблицы TADOTable через TADOConnection и TDataSource.
Все прописал для работы, отметил все поля и тд. Соединений никаких не делал на графике.
На форме у меня 2 нужных мне компонента: DBLookupComboBox3 и DBLookupComboBox4.
В DBLookupComboBox3 выбираю через Object Inspector - ListSource - fDM.DSGUInfo, а также ListField и KeyField к нему.
В DBLookupComboBox4 через выбираю через Object Inspector -
ListSource - fDM.DSGUInfo (то есть тот же Source), а вот ListField и KeyField другие. (прикерпил

Проблема: в запущенной форме при выборе в DBLookupComboBox3, а затем выборе DBLookupComboBox4, в одном из этим компонентов сбивается то, что я выбрал

Вопрос: как сделать так, чтобы не сбивалось, а оставалось то, что я выбрал. Читал про то, что надо как-то обновлять DataSet.Refresh каждый раз при выборе таблицы, но не нашел как это сделать.

P.S. если я выбираю из разных Source, то проблем нет, все остается.
Миниатюры
DBLookupComboBox в Forme  
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
16.06.2022, 11:26
Ответы с готовыми решениями:

задача на строки в forme !!!
задана строка- предложение. Напечатать самое длинное слово строки. слова в предложении разделены пробелами. ????

Udalenie zapisi v forme
moget i glupyj vopros, no vse zhe. Pri udalenii poslednej zapisi access skachet k novoj. Kak ego zastavit skakat k predyduchej? ...

вывод данных стека в Forme
Суть такова: Имеется стек с данными типа stackdata(переименованный тип int), нужно вывести эти данные в форму(можно в текстбок, листбокс...

11
0 / 0 / 0
Регистрация: 17.03.2019
Сообщений: 131
16.06.2022, 11:27  [ТС]
Вот нормальная картинка
Миниатюры
DBLookupComboBox в Forme  
0
 Аватар для krapotkin
6849 / 4676 / 1464
Регистрация: 14.04.2014
Сообщений: 20,671
Записей в блоге: 21
16.06.2022, 11:57
по картинке я засомневался, что вы понимаете, для чего нужен DBLCbox
реляционные БД строятся на том, что в некоей таблице есть код записи из другой таблицы, например, справочника, по которому можно вытащить нужную запись этого справочника.
При этом показывать человеку код нехорошо, его надо заменить текстом из справочника
Вот этим и занимается DBLCbox.
он подключен как и все DBxxx к какому-то полю, содержащему КОД
и второй стороной - к датасету-справочнику, где есть ЭТОТ ЖЕ КОД (поле KeyField) и некий текст (поле ListField)
и подменяет на лету для пользователя одно на другое
у вас ListField и KeyField одинаковые. Что на что вы там решили подменить?
Кроме того, из описания следует, что для работы DBLCbox требуется отдельный, ни к чему не подключенный более датасет2.
Потому что перемещение по этому датасету2 где-то в другом месте приведет и к замене значения в датасете1, к которому и подключен DBLCbox.

Так как вы не указали в вопросе главное - а что хотели-то достичь, помочь больше нечем
0
0 / 0 / 0
Регистрация: 17.03.2019
Сообщений: 131
16.06.2022, 12:02  [ТС]
Цитата Сообщение от krapotkin Посмотреть сообщение
по картинке я засомневался, что вы понимаете, для чего нужен DBLCbox
реляционные БД строятся на том, что в некоей таблице есть код записи из другой таблицы, например, справочника, по которому можно вытащить нужную запись этого справочника.
При этом показывать человеку код нехорошо, его надо заменить текстом из справочника
Вот этим и занимается DBLCbox.
он подключен как и все DBxxx к какому-то полю, содержащему КОД
и второй стороной - к датасету-справочнику, где есть ЭТОТ ЖЕ КОД (поле KeyField) и некий текст (поле ListField)
и подменяет на лету для пользователя одно на другое
у вас ListField и KeyField одинаковые. Что на что вы там решили подменить?
Кроме того, из описания следует, что для работы DBLCbox требуется отдельный, ни к чему не подключенный более датасет2.
Потому что перемещение по этому датасету2 где-то в другом месте приведет и к замене значения в датасете1, к которому и подключен DBLCbox.

Так как вы не указали в вопросе главное - а что хотели-то достичь, помочь больше нечем
Мне нужны комбобоксы, в которых я буду выбирать фамилии из таблицы в access или если нужно в них писать другие. Чтобы эти комбобоксы не сбивались.
Идея программы в том, что из списка фамилий и тд. человек все заполняет, а потом выводит в ворд.

DBLCbox взял так как видел в примере других работ.

Я БД не изучал и delphi тоже, поэтому делаю как умею. Если подскажите, то буду благодарен.
0
Модератор
 Аватар для D1973
9924 / 6460 / 2457
Регистрация: 21.01.2014
Сообщений: 27,411
Записей в блоге: 3
16.06.2022, 12:36

Не по теме:

Я анатомию не изучал. Хирургию - тоже. Помогите аппендицит вырезать...


Eirstrean, не проще ли программиста нанять за некоторое количество ден.знаков?
0
 Аватар для krapotkin
6849 / 4676 / 1464
Регистрация: 14.04.2014
Сообщений: 20,671
Записей в блоге: 21
16.06.2022, 13:03
т.е. все выглядит настолько простым, что не требуется ничего читать/смотреть, достаточно пары абзацев на форуме ?
ну ок.
но я вроде все подсказал? какая еще нужна подсказка?
0
0 / 0 / 0
Регистрация: 17.03.2019
Сообщений: 131
16.06.2022, 14:01  [ТС]
Мна это не интересно, интересно разобраться самому, но иногда сложно. Вот и прошу грамотных людей помочь. Мне интересно делать самому, для себя.

Добавлено через 37 секунд
Хорошо, почитаю, спасибо

Добавлено через 6 минут
Цитата Сообщение от krapotkin Посмотреть сообщение
по картинке я засомневался, что вы понимаете, для чего нужен DBLCbox
реляционные БД строятся на том, что в некоей таблице есть код записи из другой таблицы, например, справочника, по которому можно вытащить нужную запись этого справочника.
При этом показывать человеку код нехорошо, его надо заменить текстом из справочника
Вот этим и занимается DBLCbox.
он подключен как и все DBxxx к какому-то полю, содержащему КОД
и второй стороной - к датасету-справочнику, где есть ЭТОТ ЖЕ КОД (поле KeyField) и некий текст (поле ListField)
и подменяет на лету для пользователя одно на другое
у вас ListField и KeyField одинаковые. Что на что вы там решили подменить?
Кроме того, из описания следует, что для работы DBLCbox требуется отдельный, ни к чему не подключенный более датасет2.
Потому что перемещение по этому датасету2 где-то в другом месте приведет и к замене значения в датасете1, к которому и подключен DBLCbox.

Так как вы не указали в вопросе главное - а что хотели-то достичь, помочь больше нечем
Понял, все что написали, а что предложите использовать как альтернативу?
0
 Аватар для krapotkin
6849 / 4676 / 1464
Регистрация: 14.04.2014
Сообщений: 20,671
Записей в блоге: 21
16.06.2022, 15:08
вы так и не описали точно, что вам нужно, и что у вас есть в наличии
если принять на веру, что у вас есть справочник городов, и структура БД сделана так, как я описывал выше, то это действительно DBLC. Но проверить это у меня возможности нет.
0
408 / 242 / 88
Регистрация: 28.04.2022
Сообщений: 1,207
17.06.2022, 00:49
Цитата Сообщение от Eirstrean Посмотреть сообщение
В DBLookupComboBox3 выбираю через Object Inspector - ListSource - fDM.DSGUInfo, а также ListField и KeyField к нему.
В DBLookupComboBox4 через выбираю через Object Inspector -
ListSource - fDM.DSGUInfo (то есть тот же Source), а вот ListField и KeyField другие. (прикерпил
Проблема: в запущенной форме при выборе в DBLookupComboBox3, а затем выборе DBLookupComboBox4, в одном из этим компонентов сбивается то, что я выбрал
Так оно и должно "сбиваться". У вас оба компонента подключены к одному DataSource (т.е. источнику данных), соответственно, курсор у вас на оба списка один. И при изменении в одном списке, это вызывает изменения в другом, т.к. курсор перемещается. Чтобы сделать работу списков независимой друг от друга, надо создать два независимых источника данных.
0
0 / 0 / 0
Регистрация: 17.03.2019
Сообщений: 131
17.06.2022, 07:54  [ТС]
Цитата Сообщение от Gluck99 Посмотреть сообщение
Так оно и должно "сбиваться". У вас оба компонента подключены к одному DataSource (т.е. источнику данных), соответственно, курсор у вас на оба списка один. И при изменении в одном списке, это вызывает изменения в другом, т.к. курсор перемещается. Чтобы сделать работу списков независимой друг от друга, надо создать два независимых источника данных.
Благодарю за ответ, спасибо, а есть ли альтернатива, кроме 2х источников данных? Например, использовать что-то другое, а не lookupcombobox?
0
 Аватар для krapotkin
6849 / 4676 / 1464
Регистрация: 14.04.2014
Сообщений: 20,671
Записей в блоге: 21
17.06.2022, 09:27
Лучший ответ Сообщение было отмечено Eirstrean как решение

Решение

вам жалко что-ли?
датасет - это просто массив данных, скачанных с сервера
никакой чудесной связи между ним и сервером нет
надо два - делайте два, десять - десять. даже если они брали данные из одной и той же таблицы.
у лукапа должен быть свой отдельный, ни к чему более не подключенный справочный датасет ListDataSource

Добавлено через 29 минут
структура вашей базы нам неизвестна, но вот как ДОЛЖНО быть

предположим, есть таблица addresses - Справочник адресов, у которой есть ключевое поле ID и поля Street, City, House и другие
есть таблица профессий - professions, где есть ключевое поле ID и наименование профессии Name

и есть таблица клиентов - clients, у которой есть свое поле ID и поля ADDRESS_ID и PROFESSION_ID, в которых лежат коды из соответствующих таблиц выше

к каждому датасету подключены имядатасета_datasource

делаем два DBLC
1.
DataSource = clients_datasource
ListSource = addresses_datasource
DataField = ADDRESS_ID
KeyField = ID
ListField = Street;City;House
2.
DataSource = clients_datasource
ListSource = professions_datasource
DataField = PROFESSION_ID
KeyField = ID
ListField = NAME

все датасеты должны быть открыты
все указанные поля заполнены
теперь если выбрать в любом комбо что-либо, поменяется содержимое поля ADDRESS_ID или PROFESSIONS_ID в датасете clients соответственно, при этом пользователь будет видеть те поля, которые указаны в ListField

если после этого у вас еще не получилось, рассказывать здесь бесполезно, сначала читайте/смотрите обучалки
1
0 / 0 / 0
Регистрация: 17.03.2019
Сообщений: 131
17.06.2022, 10:53  [ТС]
спасибо большой за подробный ответ
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
17.06.2022, 10:53
Помогаю со студенческими работами здесь

zagruzka dannyh v combobox na forme iz polja tablicy- help!
Mne nado sdelat' v forme combobox, v kotoryi by zagruzhalis' dannyje iz polja tablicy, no user by mog ne tol'ko vybrat' iz nih, no i vvesti...

Pochemu na esli na forme lejit checkbox, on vsegda kakoito serovati ... :-)
Pochemu na esli na forme lejit checkbox, on vsegda kakoito serovati, a kak sdelat chob on s samogo nachala bil s galochkoi (ili bez)? ...

DBLookupComboBox
Как его использывать? мне нужно например показать 3й столбец из DBgirda. И будет ли повторятся в выпадающем списке те слова которые в гирде...

DBLookupComboBox
Помогите пожалуйста. Вот часть кода: KursValut_RUB := DataModule17.bcdfldZaprosRascheta_tblKurs_rub.AsFloat; ...

DBLookupComboBox
Можно ли как-то сделать, чтобы программно выбирал нужное значение из списка автоматически? Либо присвоить текстовое значение по умолчанию?


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

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
Как я обхитрил таблицу Word
Alexander-7 21.03.2026
Когда мигает курсор у внешнего края таблицы, и нам надо перейти на новую строку, а при нажатии Enter создается новый ряд таблицы с ячейками, то мы вместо нервных нажатий Энтеров мы пишем любые буквы. . .
Krabik - рыболовный бот для WoW 3.3.5a
AmbA 21.03.2026
без регистрации и смс. Это не торговля, приложение не содержит рекламы. Выполняет свою непосредственную задачу - автоматизацию рыбалки в WoW - и ничего более. Однако если админы будут против -. . .
Программный отбор значений справочника
Maks 21.03.2026
Установка программного отбора значений справочника "Сотрудники" из модуля формы документа. В качестве фильтра для отбора служит предопределенное значение перечислений. Процедура. . .
Переходник USB-CAN-GPIO
Eddy_Em 20.03.2026
Достаточно давно на работе возникла необходимость в переходнике CAN-USB с гальваноразвязкой, оный и был разработан. Однако, все меня терзала совесть, что аж 48-ногий МК используется так тупо: просто. . .
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru