Реализуйте простое отношение «многие ко многим» в форме в базе OpenOffice.org. - PullRequest
0 голосов
/ 07 января 2010

Я делаю небольшую реляционную базу данных, которая будет использоваться одним человеком на одном компьютере. Я выбрал OpenOffice.org Base (версия 3.1.1), потому что он бесплатный и его должно быть более чем достаточно для этого случая. Упрощенная версия моей проблемы:

У меня есть таблица статей со столбцами: ID, заголовок, контент и т. Д. *
У меня есть таблица ключевых слов со столбцами: идентификатор, ключевое слово.
У меня есть таблица отношений со столбцами: ID, ArticleID, KeywordID

Просто простой классический пример отношения многих ко многим.

Затем я создал форму (для пользователя, использующего базу данных) с помощью «Представления дизайна» в Base и связал ее с таблицей «Статьи», которая прекрасно работает и позволяет мне просматривать, редактировать и создавать строки в таблице «Статьи».

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

Количество ключевых слов конечно (вероятно, 5-15), если это имеет значение. Предпочтительной настройкой будет список ключевых слов (динамически связанных с таблицей ключевых слов, конечно) в ранее упомянутой форме, которую я уже создал, с флажком перед каждым ключевым словом

Я пробовал использовать Google все возможные ключевые слова, и я не нашел ничего подходящего для моего случая. Я верю, что ответ каким-то образом использует SubForms, или, возможно, какой-то синтаксис SQL, с которым я не знаком. Любая помощь приветствуется.

Ответы [ 2 ]

3 голосов
/ 07 мая 2012

Чтобы ответить на этот вопрос немного подробнее, так как это происходит на ранних этапах поиска Google, см. Следующее видео о создании файла movies.odb с нуля:

http://www.youtube.com/watch?v=GYawYO8u3_s

Некоторые дополнительные замечания по созданию этого:

Настройка таблиц

  • Принципиальные таблицы должны иметь целочисленный первичный ключ, для которого установлено значение AutoValue
  • Таблица связей должна иметь первичный ключ из нескольких столбцов, и оба столбца должны быть целыми числами
  • Связи таблиц должны быть установлены в диалоге Отношения ...
  • Отношения исчезают, если параметры обновления не изменились с Нет действий

Настройка подчиненной формы

  • Данные подчиненной формы >> Содержимое должны быть установлены в таблицу сопоставления
  • Данные подчиненной формы >> Поля связи Link и поля Link slave должны быть установлены в соответствующие поля (в соответствии с диалогом Relationships ..., обсужденным выше)
  • Элемент управления таблицы должен быть отрисован (в это время фокус должен быть на подчиненной форме, чтобы элемент управления таблицей находился ниже подчиненной формы в Навигаторе форм
  • Столбец должен быть вставлен в элемент управления таблицы
  • В столбце Данные >> в поле данных должен быть указан идентификатор связанных данных (т. Е. Не основной формы)
  • Столбец Данные >> Тип содержимого списка должен быть установлен в «sql»
  • Столбец Дата >> Содержимое списка должно быть установлено на «ВЫБРАТЬ« Имя жанра »,« GenreID »ИЗ« Жанра »» (где Имя жанра - это соответствующее поле из связанной таблицы, GenreID - это первичный ключ этого таблица, а Жанр - это связанная таблица)
1 голос
/ 08 января 2010

Я провел еще несколько поисков и, наконец, нашел решение .

Поток, объясняющий эти самые проблемы (среди прочих вопросов), создающий форму для базы данных, содержащей отношение «многие ко многим» в Base с использованием средней таблицы, можно найти по адресу:

http://user.services.openoffice.org/en/forum/viewtopic.php?p=16159#p16159

Пример базы данных с функциональной формой одним из постеров вышеупомянутой темы (DrewJensen) можно найти и загрузить на странице 2 вышеупомянутой опубликованной темы. (названный movies_2.odb)

Краткое описание решения с использованием моих примеров таблиц и столбцов из исходного сообщения:
Хитрость заключается в том, чтобы создать вложенную форму, связанную с таблицей отношений, внутри формы, которую я создал. Эта форма должна содержать элемент управления таблицей. Затем в этом элементе управления таблицей должен быть создан столбец. Столбец должен быть привязан к столбцу KeywordID. Поле «Содержимое списка» для этого столбца должно содержать: ВЫБРАТЬ «Ключевое слово», «ИД» ИЗ «Отношения».
(просто проверьте приведенную выше ссылку, если мои инструкции являются загадочными)

...