Link para outro registro em um banco de dados do FLAT Access

1

Eu tenho um banco de dados simples e plano com cerca de 40 campos. Cada registro tem um ID exclusivo.

Existem alguns pares de registros que têm uma conexão tênue e gostaria de colocar um link / marcador em cada registro para que eu possa pule diretamente para o registro conectado.

É este registro para gravar links possíveis dentro de um simples estrutura de banco de dados plana?

    
por eirman 05.03.2018 / 11:59

1 resposta

0

Existem alguns aspectos para isso e muitas soluções possíveis.

Parece que as principais questões / objetivos que você tem são:

  1. Como deve ser o esquema (tabelas) para permitir uma vinculação entre dois registros na mesma tabela?
  2. Como pular de um registro em um formulário (visão única) para o registro relacionado?

Existem várias maneiras de vincular os registros. O mais simples é provavelmente um campo na tabela que contém o ID da mesma tabela. A desvantagem é que é possível que os dados sejam inconsistentes: se os links do registro 1 para o registro 2 devem registrar o link 2 para o registro 1 em retorno? Talvez. Talvez isso não seja importante para você.

Nota: Se você precisar vincular mais do que apenas pares de registros (ou seja, grupos com mais de dois), o campo de auto-referência simples não funcionará (a menos que você os encadeie, mas - yuck). Neste caso você tem que ter outra tabela que tenha registros para cada elemento em cada grupo. Eu vou ignorar isso, já que você disse especificamente pares de registros.

Portanto, adicione um campo à tabela chamado algo como RelatedItemID . Deve ser um número do mesmo tipo de dados que o ID da tabela.

Em seguida, você quer uma maneira de criar os links. Sugiro uma caixa de combinação no formulário que lista todos os registros dessa tabela e tem um ControlSource definido para o campo RelatedItemID .

Finalmente, para ir para o registro relacionado é uma simples questão de usar o código VBA por trás de um botão.

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

Isso navegará no formulário para o registro relacionado.

Para garantir a consistência - ou seja, aplicar o relacionamento bidirecional - você pode querer algum código no evento AfterUpdate da caixa de combinação para definir o link do 'outro' registro para o registro atual e limpar o link antigo (se houver) . Isso não é obrigatório - significa apenas que o usuário teria que manter manualmente o relacionamento de duas vias.

    
por 06.03.2018 / 08:52