Добавление в MS Access диаграммы отношений программно - PullRequest
2 голосов
/ 09 ноября 2010

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

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

Проблема в том, что если я добавлю новую таблицу с ограничением, которое связывает ее с существующей таблицей (например, я добавлю EmployeeHobbies с отношением FK к существующему PK в Employees), в то время как таблица построена правильно, новая отношения не отображаются на диаграмме отношений. Со временем диаграмма постепенно становится менее полной.

Существует ли программный метод, заставляющий Access обновлять свою диаграмму отношений из информации об ограничениях в базе данных или, если это не удалось, хранится ли диаграмма отношений в каком-то скрытом системном объекте, который я могу обновить непосредственно, чтобы отразить мои изменения?

Редактировать: я не смог дать понять, что мое приложение написано на Delphi, а не MS Access. Пользователи, имеющие копию MS Access, могут видеть диаграмму взаимосвязи, другие не могут.

Ответы [ 2 ]

2 голосов
/ 09 ноября 2010

Не знаю, подойдет ли RunCommand, но для чего она стоит:

DoCmd.RunCommand acCmdRelationships
DoCmd.RunCommand acCmdShowAllRelationships
1 голос
/ 09 ноября 2010

Вы можете использовать для этого Стивена Лебанса SaveRelationshipView . Его код сохраняет свойства каждого элемента из представления «Отношения» в таблицу. Позже тот же самый вид компоновки можно воссоздать из таблицы.

Вы можете настроить свою копию представления "Отношения", чтобы определить значения для включения новой строки в таблицу tblRelationshipViews. Затем пусть пользователи воссоздают свое представление «Отношения» на основе обновленной информации таблицы. Возможно, вы могли бы даже автоматизировать это для них автоматически.

...