1

У меня есть простая плоская база данных с около 40 полей. Каждая запись имеет уникальный идентификатор.

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

Возможна ли эта запись для записи ссылок в простой плоской структуре базы данных?

1 ответ1

0

Есть несколько аспектов этого и много возможных решений.

Кажется, что у вас есть следующие основные вопросы / цели:

  1. Как должна выглядеть схема (таблицы), чтобы обеспечить связь между двумя записями в одной таблице?
  2. Как перейти с одной записи в форме (одиночное представление) на связанную запись?

Есть несколько способов связать записи вместе. Самым простым, вероятно, является поле в таблице, содержащее идентификатор той же таблицы. Недостатком является то, что данные могут быть несовместимыми: если запись 1 ссылается на запись 2, должна быть запись 2, ссылка на запись 1 взамен? Может быть. Может быть, это не имеет значения для вас.

Примечание: если вам нужно связать больше, чем просто пары записей (то есть группы из более чем двух), тогда простое поле самоссылки не будет работать (если вы не объедините их в цепочку, но - чёрт). В этом случае у вас должна быть другая таблица, в которой есть записи для каждого элемента в каждой группе. Я проигнорирую это, так как ты специально сказал пары записей.

Поэтому добавьте поле в таблицу, называемое чем-то вроде RelatedItemID . Это должен быть номер того же типа данных, что и идентификатор таблицы.

Далее вы хотите способ создания ссылок. Я предлагаю поле со списком в форме, которая перечисляет все записи из этой таблицы и имеет ControlSource установленный в поле RelatedItemID .

Наконец, чтобы перейти к соответствующей записи, достаточно просто использовать код VBA за кнопкой.

Private Sub JumpToRelated_Click()
    Me.RecordsetClone.FindFirst "ID = " & RelatedItemID
    If Not Me.RecordsetClone.NoMatch Then
        Me.Bookmark = Me.RecordsetClone.Bookmark
    End If
End Sub

Это переместит форму к связанной записи.

Для обеспечения согласованности, т. Е. Обеспечения двухсторонней связи, может потребоваться некоторый код в событии AfterUpdate поля со списком, чтобы установить ссылку «другой» записи на текущую запись и очистить старую ссылку (если есть). Это не обязательно - это просто означает, что в противном случае пользователю придется вручную поддерживать двустороннюю связь.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .