Topic: Связь Многие-ко-многим

Пример проекта со связью многие ко многим.


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

Post's attachments

Attachment icon Books and Authors (many-to-many).zip 8.06 kb, 1058 downloads since 2017-09-08 

Dmitry.

Re: Связь Многие-ко-многим

Хотел ознакомиться с проектом, при запуске получил ошибки (вложил) (с я.диска что-то картинки не удалось прилепить). Сам процесс виснет и грузит ЦП на 100%.

Недавно поставил MVDB "сверху" 3.5 на 2.8. Предположил, что в этом может быть причина. Удалил MVDB, поставил заново 3.5. Та же ситуация.

Post's attachments

Attachment icon 2017-09-08_10-39-35.jpg 114.77 kb, 313 downloads since 2017-09-08 

Re: Связь Многие-ко-многим

Raspr
Спасибо. Скачайте снова проект, исправил ошибку.

Dmitry.

Re: Связь Многие-ко-многим

Добрый день! подскажите как сделать чтобы на одном гриде отображался и автор, и книга. при клике на запись в гриде открывалось окно редактировании книги. добавил добавление файла к записи книги. я думаю структура не правильная или это как то надо с помощью вычислительного поля и select. если время будет помогите кто-нибудь. сейчас при клике на запись открывается окно, в котором все записи таблицы (т.е. не открывает дочернии).

Post's attachments

Attachment icon Books and Authors (many-to-many).rar 296.84 kb, 872 downloads since 2017-10-30 

Re: Связь Многие-ко-многим

pt.82
Здравствуйте.


На одном гриде довольно проблемно отобразить и авторы и книги. Сперва нужно понять, как вы хотите чтобы это отображалось?

Dmitry.

6 (edited by pt.82 2017-10-31 02:30:20)

Re: Связь Многие-ко-многим

Добрый день!
хотел сделать так: вход будет по логин/пароль, user (он же автор) должен на гриде видеть только те книги, в которых он автор ну и открыть конечно же их, и отредактировать (добавить файл, или изменить категорию), админ же будет видеть все записи всех пользователей ну и конечно же редактировать тоже, для этого и надо чтоб в гриде отображался и пользователь и его книга.
вход по логин/пароль взят от сюда http://myvisualdatabase.com/forum/viewtopic.php?id=1633
достаточно чтобы автор видел только свои записи, но без отображение в гриде имени автора это не получается

Re: Связь Многие-ко-многим

Тогда нет смысла в грид выводить название автора, просто выводите в грид книги (из таблицы bookauthors). Скриптом можете задать для грида фильтр после того как пользователь ввел логин и пароль.

Form1.TableGrid1.dbFilter := 'id_author='+frmLogin.ComboBox1.sqlValue;
Form1.TableGrid1.dbUpdate;

таким образом грид будет показывать книги только одного автора, который ввеш логин и пароль.

Dmitry.

Re: Связь Многие-ко-многим

спасибо попробую!

Re: Связь Многие-ко-многим

Добрый день! Но что то все равно не получилось, да фильтр работает, но при редактировании связи не правильные в окне редактирования вываливаются все книги и все файлы (если открывать запись через грид из таблицы bookauthors), если же открывать окно редактирования книги через грид из таблицы books, то все но на этом гриде нельзя отфильтровать записи пользователей. Помогите пожалуйста!

Post's attachments

Attachment icon Books and Authors (many-to-many).rar 300.16 kb, 888 downloads since 2017-11-02 

Re: Связь Многие-ко-многим

Пожалуйста описывайте конкретно, что именно не работает, с названиями форм и компонентов, на которые нажимаете.

Dmitry.

Re: Связь Многие-ко-многим

На Form1 есть TableGrid1 при клике на который открывается форма frmBook на которой есть TableGrid1 и TableGrid2, так вот в них отображаюся все записи таблиц users и files, а должны только дочернии записи редактируеимой записи. Пароли на пользователях "1" на admin-admin

Re: Связь Многие-ко-многим

Для грида Form1.TableGrid1 главной таблицей бд является "bookauthors", у данной таблицы БД нет дочерних таблиц, в которой могли бы хранится дочерние записи, соотвественно когда вы открываете форму для редактирования (frmBook), на данной форме вы не можете отобразить дочерние записи из других таблиц, т.к. они таковыми не являются для таблицы бд "bookauthors"


Также на форме frmBook кнока для сохранения записи Button1 пытается сохранить запись в таблицу бд "book", что не верно, вы ведь открыли данную форму для редактирования из таблице бд bookauthors.



В вашем случае проще в грид Form1.GridBooks вывести поле bookauthors.id_users, чтобы можно было фильтровать данные по данному поле, само поле можно из грида скрыть.


Немного доработал ваш проект

Post's attachments

Attachment icon Books and Authors (many-to-many)_fixed.zip 13.47 kb, 710 downloads since 2017-11-02 

Dmitry.

Re: Связь Многие-ко-многим

Спасибо!!! хм оказалось все просто. Спасибо еще раз!