Topic: Мультиселект

Делаю проект базы данных и уперлась в одну проблему, которую пока не знаю как решить.
Есть таблица с данными товара и таблица с данными заключаемых контрактов.
По товару может существовать несколько контрактов, по одному контракту может быть продано несколько товаров.
Задача: реализовать эту множественность связей в БД.
Проблема: Двусторонние мультисвязи в программе, как я поняла, не реализованы. Мультиселект работает только для поиска, сохранение данных в таблице при активном мультиселекте не возможно.
Подскажите, как все же решить данную задачу? Без мультиселекта весь проект теряет смысл.

2 (edited by indigen 2016-08-17 19:39:04)

Re: Мультиселект

Попробуйте решить проблему топорно (в лоб) с помощью чекбоксов. Недавно натыкался на подобный вопрос с решением от Дмитрия. Если наткнусь снова - ссылку сюда добавлю. (кстати вроде решение работало даже на 1.44)

UPD: http://myvisualdatabase.com/forum/viewtopic.php?id=1093 - вроде оно. Угадал?

3 (edited by mm84 2016-08-18 07:57:48)

Re: Мультиселект

indigen wrote:

Попробуйте решить проблему топорно (в лоб) с помощью чекбоксов. Недавно натыкался на подобный вопрос с решением от Дмитрия. Если наткнусь снова - ссылку сюда добавлю. (кстати вроде решение работало даже на 1.44)

UPD: http://myvisualdatabase.com/forum/viewtopic.php?id=1093 - вроде оно. Угадал?

Да, эту тему видела, но она, к сожалению, работает только для удаления нескольких записей, но не для сохранения привязки к нескольким записям из другой таблицы.
На самом деле, вчера погуглила вопрос и обнаружила, что есть классическое решение задачи - через соединительную таблицу (см. пример схемы в аттаче). Но эту схему я пока только осваиваю,  т.к. к программированию и ИТ не имею ни малейшего отношения (я вообще юрист и клепаю БД для облегчения себе работы).

Post's attachments

Attachment icon connecting_table.jpg 33.81 kb, 227 downloads since 2016-08-18 

Re: Мультиселект

mm84
Приветствую,


Вы правильно нашли, что это необходимо реализовать через соединительную таблицу, также это называют связью Многие ко многим.


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


Мультиселект для ComboBox реализован только для поиска, но в принципе его можно приспособить и для связи многие ко многим используя скрипт.

Post's attachments

Attachment icon Books and Authors (many-to-many).zip 7.94 kb, 384 downloads since 2016-08-18 

Dmitry.

Re: Мультиселект

DriveSoft wrote:

mm84
Приветствую,


Вы правильно нашли, что это необходимо реализовать через соединительную таблицу, также это называют связью Многие ко многим.


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


Мультиселект для ComboBox реализован только для поиска, но в принципе его можно приспособить и для связи многие ко многим используя скрипт.

Дмитрий, спасибо большое за пример!

Правда, я не могу понять, как в форме выбора frmSelectBook выбранная книга привязывается к определенному автору, ведь в соединительную таблицу bookauthors сохраняется только ссылка на запись из таблицы books, а автор нигде не указывается.
Я, честно говоря, думала, что в данной форме потребуется указание и книги, и автора.
Вроде работает - и ладно. Но хочется понимать логику процесса.

Re: Мультиселект

mm84
Немного доработал для вас пример, на вкладке Authors and Books формы Form1 вы можете добавить в таблицу бд bookauthors соотношение автора и книги.

Post's attachments

Attachment icon Books and Authors (many-to-many) ex.zip 8.45 kb, 374 downloads since 2016-08-22 

Dmitry.

Re: Мультиселект

Да, именно так я себе и представляла эту форму.