私は現在、VBAモジュールを介して動的にユーザーフォームを構築するアクセスアプリケーションを開発中です。フォームを作成するには、MS SQL DBからデータが必要です。リンクテーブル接続を編集できないため、私のuserformが空白になる
https://support.microsoft.com/en-us/kb/892490
userinputsをユーザーフォームに集め、続いていくつかの他のリンクテーブルに挿入されている(私はAttachDSNlessTable方法を使用して、アプリケーション全体の開始時に確立されているリンクテーブルの接続を介してこのデータを収集します:ResultTables)を同じSQL Server上に作成します。
私の問題VBベースのリンクテーブル接続では、私のユーザーフォームの入力を結果テーブルに挿入できません。 FormViewでフォームを表示すると、代わりに完全に空白になります。 DesignViewでは、すべてのコントロールが表示されます。
リンクされたテーブルを手動で作成しても問題はありません。テーブル内に新しい行を入力できるインデックスを選択できるからです。
私は、ユーザーがSQL Serverにアクセスして、更新/挿入/削除の手順を実行できることを確信しています。私はサーバー上でテーブルのインデックスを作成しようとしましたが、インデックスはAccessに固有のものではありません。テーブルがリンクされると、私は接続を編集することができません。自動的に主キーを検出する必要があり、SQL Serverのテーブルをリンク
https://support.microsoft.com/en-us/kb/93261
Option Compare Database
'//Name : AttachDSNLessTable
'//Purpose : Create a linked table to SQL Server without using a DSN
'//Parameters
'// stLocalTableName: Name of the table that you are creating in the current database
'// stRemoteTableName: Name of the table that you are linking to on the SQL Server database
'// stServer: Name of the SQL Server that you are linking to
'// stDatabase: Name of the SQL Server database that you are linking to
'// stUsername: Name of the SQL Server user who can connect to SQL Server, leave blank to use a Trusted Connection
'// stPassword: SQL Server user password
Function AttachDSNLessTable(stLocalTableName As String, stRemoteTableName As String, stServer As String, stDatabase As String, Optional stUsername As String, Optional stPassword As String)
On Error GoTo AttachDSNLessTable_Err
Dim td As TableDef
Dim stConnect As String
For Each td In CurrentDb.TableDefs
If td.Name = stLocalTableName Then
CurrentDb.TableDefs.Delete stLocalTableName
End If
Next
If Len(stUsername) = 0 Then
'//Use trusted authentication if stUsername is not supplied.
stConnect = "ODBC;DRIVER=SQL Server;SERVER=" & stServer & ";DATABASE=" & stDatabase & ";Trusted_Connection=Yes"
Else
'//WARNING: This will save the username and the password with the linked table information.
stConnect = "ODBC;DRIVER=SQL Server;SERVER=" & stServer & ";DATABASE=" & stDatabase & ";UID=" & stUsername & ";PWD=" & stPassword
End If
Set td = CurrentDb.CreateTableDef(stLocalTableName, dbAttachSavePWD, stRemoteTableName, stConnect)
CurrentDb.TableDefs.Append td
CurrentDb.TableDefs.Refresh
'td.CreateIndex (ID2)
AttachDSNLessTable = True
Exit Function
AttachDSNLessTable_Err:
AttachDSNLessTable = False
MsgBox "AttachDSNLessTable encountered an unexpected error: " & Err.Description
End Function