私の部署は、VBAとそれは、もともと私たちのいずれかのサーバー上のAccessデータベースを指摘アクセス2016を使用して作成したアプリケーションを使用しています。別のサーバーにデータを移行した後、私は今、それが別のサーバー上の他のSQL Serverデータベースを指す必要があります。しかし、私は接続を作るように見えることはできません。はどうすればアクセス2016 VBAで新しいデータソースに接続しますか?
私は、問題のサーバー上のdbowner権限を持っています。
'DoCmd.OpenForm "frmInactiveShutDown", acNormal, , , , acHidden
'Commented out the above statement
...
'Set conn = CurrentProject.Connection
'==================================================================
'Start of Added Code for SQL Migration
Set conn = New ADODB.Connection
With conn
.ConnectionString = "Provider=SQLNCLI11;Data Source=(My Server Name);Initial Catalog=(My Database Name);User ID=(Username);Password=(Password)"
.Open
If .State = adStateClosed Then
MsgBox "Connection unsuccessful. Could not open connection.", vbInformation, "Error:"
End If
End With
Set rst = New ADODB.Recordset
With rst
.ActiveConnection = conn
.CursorLocation = adUseClient
.CursorType = adOpenStatic
.LockType = adLockOptimistic
.Open "tbl_Users"
End With
'End of Added Code for SQL Migration - See Section 2 for rest of code.
'==================================================================
...
'Section 2 of Code
'==================================================================
'Start of added code for SQL Migration
rstLog.Open "tblUserLog", conn, adOpenStatic, adLockOptimistic
rstLog.AddNew
rstLog!UserID = rst!UserID
rstLog!TimeIn = DateTime.Now()
rstLog.Update
MsgBox "Success! Connection was made successfully.", vbInformation
'End of added code for SQL Migration
'===================================================================
私のフォームは、ユーザーがフォームのリストを選択するドロップダウンがあり、次のよう
'Remove the filter, close the log on form, and open the Switchboard
rst.Filter = 0
DoCmd.Close acForm, "frmUserLogOn"
'Open the Main Switchboard
DoCmd.OpenForm "frmMain", acNormal
'Open the InactiveShutDown form in Hidden mode
DoCmd.OpenForm "frmInactiveShutDown", acNormal, , , , acHidden
...
Set conn = CurrentProject.Connection
...
rstLog.Open "tblUserLog", conn, adOpenKeyset, adLockOptimistic
rstLog.AddNew
rstLog!UserID = rst!UserID
rstLog!TimeIn = Now()
rstLog.Update
私の新しいコードは次のように
接続文字列の元のコードはでした表。私はそのテーブルにテストユーザーを追加しましたが、そのテストユーザーはドロップダウンリストに表示されません。したがって、私は接続が行われていないと思う。
は、私は引用符で囲まれたデータソースの名前、初期カタログ、ユーザーIDとパスワードを入力する必要がありますか?だからUserID='Admin'; Password='Test'
?
誰かが間違っていることを知っていますか?
エラーメッセージを与えていますか?試してみるとどうなるの? –
これはVB.NETコード – Plutonix
でもないが、引用符は正しいが、私はユーザIDがユーザIDまたはユーザID(すべて一緒に)でなければならないと信じている。 [これを確認してください](https://www.connectionstrings.com/sql-server-native-client-11-0-oledb-provider/standard-security/) –