MSAccess2007フロントエンドとSQLServerExpressバックエンドがあります。(これは元々、アクセスデータベースからアップサイズされました)。
このデータベースは本番環境からコピーされ、別の場所/ドメインで本番環境サーバーに実行されています。これは開発に使用されます。私が持っているのは2つの接続文字列なので、サーバー/データベースを切り替えることができます。
SQL認証を使用して接続し、ODBC接続文字列を介してMSAccessリンクテーブルを接続します。
SQLユーザーはデータベースへのdbowner権限/アクセス権を持っています
リンクテーブルは正常に更新され、フロントエンドでテーブルを開いてテーブル内のデータを変更できますが、標準のAccessフォームを開こうとすると、ほとんどがテーブルに直接リンクされ、「接続に失敗しました... ..サーバーが存在しないか、アクセスが拒否されました。」次に、テーブルが現在接続されているサーバーではなく、元のサーバー名でSQLServerログオンボックスが表示されます。
参照用の接続文字列は次のとおりです。{DimsLocalNameAs String Dim tdf As TableDef Dim rs As dao.Recordset
''This is a basic connection string, you may need to consider password and so forth
' cn = "ODBC;DSN=aid_dev;Trusted_Connection=No;APP=Microsoft Office 2007;DATABASE=aid_dev;"
cn = "ODBC;DRIVER=SQL Server;SERVER=KAL1\SQLEXPRESS;DATABASE=aid_dev;Uid=User;Pwd=Password"
''All fields fro`enter code here`m tables
strSQL = "SELECT TABLE_CATALOG, " _
& "TABLE_SCHEMA, " _
& "TABLE_NAME, " _
& "TABLE_TYPE " _
& "FROM [" & cn & "].INFORMATION_SCHEMA.tables " _
& "WHERE TABLE_TYPE = 'BASE TABLE'"
Set rs = CurrentDb.OpenRecordset(strSQL)
Do While Not rs.EOF
sLocalName = rs!TABLE_SCHEMA & "_" & rs!TABLE_NAME
With CurrentDb
If DLookup("Name", "MSysObjects", "Name='" & sLocalName & "'") <> vbNullString Then
If .TableDefs(sLocalName).Connect <> cn Then
.TableDefs(sLocalName).Connect = cn
.TableDefs(sLocalName).RefreshLink
End If
Else
''If the table does not have a unique index, you will neded to create one
''if you wish to update.
Set tdf = .CreateTableDef(sLocalName)
tdf.Connect = cn
tdf.SourceTableName = rs!TABLE_NAME
.TableDefs.Append tdf
.TableDefs.Refresh
''This will produce a message box if the table does not have a unique index
''DoCmd.TransferDatabase acLink, "ODBC Database", cn, acTable, rs!TABLE_NAME, sLocalName
End If
End With
rs.MoveNext
Loop}
前もって感謝します
ロジャー
編集-問題を発見しましたが、対処方法 接続を確立すると、実際にはSQLテーブルへのリンクが作成されますが、dbo.Tablenameとして作成されます。フォームはdbo.tablenamesではなくテーブル名のみを指しているため、これですべてのレポートが壊れます。元のリンクは、同じ元の接続プロパティで引き続き存在します。
1)元のテーブル接続プロパティを変更する方法または2)dbo.tablenameの名前をtablenameに変更する方法
または、すべてのフォームクエリなどを変更するだけですか。
これが私を怒らせるのを手伝ってください。
ありがとう
ロジャー