Usando visualizações SQL para adicionar/editar dados no Microsoft Access
Esta é a parte II de uma série de duas partes sobre visualizações que escrevi, você pode ver a parte I aqui.
Nos últimos dois anos, tive muita experiência em trabalhar em bancos de dados de acesso com os dados vinculados a tabelas armazenadas no SQL Server. Com bancos de dados relacionais e tabelas de pesquisa, você pode facilmente terminar com uma exibição que contém várias colunas numéricas que apenas contêm a chave primária de outras tabelas.
Digamos, por exemplo, que você tenha um banco de dados com duas tabelas:uma para informações da empresa e outra apenas para contatos, mas você precisa vincular seus contatos a empresas e tem situações em que um contato está vinculado a várias empresas. Você pode gerenciar isso facilmente criando uma terceira tabela de CompanyContacts que seriam linhas de dados contendo CompanyID e ContactID. Existem muitas situações em que você teria uma tabela semelhante que vincula dados de uma tabela a outra, mas essas tabelas precisam ser mantidas e gerenciadas por usuários que realmente precisam ver os dados subjacentes e não apenas os IDs. Para resolver o problema, você pode criar uma visualização com todas as tabelas necessárias e basear seu formulário na visualização vinculada, mas notará rapidamente que não pode editar nenhum dado, tudo é somente leitura.
Dicas para tornar sua visualização editável
Para editar sua visualização no Access, você precisará certificar-se de que ela tenha uma chave primária da tabela que deseja editar, juntamente com o campo de carimbo de hora e um índice. Os dois primeiros podem ser facilmente realizados adicionando os campos no design da sua view no SQL Server, para o último use o CREATE UNIQUE INDEX conforme mostrado abaixo, junto com o código para adicionar sua view como uma tabela vinculada:
Dim tdf As DAO.TableDef
Dim db As DAO.Database
Definir db =CurrentDb
Definir tdf =db.CreateTableDef
tdf.Name =“ViewNameInAccess”
tdf.SourceTableName =“dbo.ViewName ”
tdf.Connect =“ODBC;”
db.TableDefs.Append tdf
db.Execute “CREATE UNIQUE INDEX [PRIMARY] ON [ViewNameInAccess](MainTableID);”, dbFailOnError