「accdb」アプリケーションに取り組んでいます。私のテーブルのほとんどは SQL Server 2008 にリンクされています。別のデータベースに接続するオプションをユーザーに提供したいので、次のことを行う画面を提供しています。
Private Sub cmdLinkTables_Click()
On Error GoTo cmdLinkTables_Click_Err
For Each tdf In CurrentDb.TableDefs
If InStr(1, tdf.name, "MSys") Then GoTo NextIteration 'skip system tables
If Len(tdf.Connect) <= 0 Then GoTo NextIteration 'skip local tables
tdf.Connect = Me.txtConnectionString
tdf.RefreshLink
NextIteration:
Next tdf
Exit Sub
cmdLinkTables_Click_Err:
MsgBox err.Description, vbCritical, GetAppTitle
End Sub
新しいデータベースに接続した後、何らかの理由で主キーが削除され、編集できなくなった 1 つのテーブルを除いて、すべてが正常に機能しました (それは言葉ですか?)。これは、私が使用した新しい接続文字列です。
ODBC;Description=***;DRIVER=SQL Server;SERVER=SERVER2008\MSSQLSERVER2008;UID=***;PWD=***;APP=Microsoft Office 2010;DATABASE=***
そして、問題のテーブルも必要だと思ったので、SQL Server によって作成されたスクリプトを提供します。
CREATE TABLE [dbo].[tblUsersPerm](
[ID] [int] IDENTITY(1,1) NOT NULL,
[User] [nvarchar](50) NULL,
[ScreenObjectName] [nvarchar](200) NULL,
[ReadOnly] [bit] NOT NULL,
[Allow] [bit] NOT NULL
) ON [PRIMARY]
GO
これで必要な情報はすべて揃ったと思います。私が正しいことを願っています。もちろん、主キーを手動で設定してテーブルを再び編集可能にすることはできますが、ユーザーはそれを行うことができません。
主キーの何が問題なのか、誰にも分かりますか?