1

「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

これで必要な情報はすべて揃ったと思います。私が正しいことを願っています。もちろん、主キーを手動で設定してテーブルを再び編集可能にすることはできますが、ユーザーはそれを行うことができません。

主キーの何が問題なのか、誰にも分かりますか?

4

1 に答える 1

1

主キーの何が問題なのか、誰にも分かりますか?

おっしゃる通り、主キーの問題は単に SQL Server テーブルに存在しないことです。DDL を実行したところ、SQL Server データベースに PK のないテーブルが生成されました。テーブル デザイナーに移動し、[ID] を主キーとして指定し、変更を保存してから、次のScript Table as > CREATE ...ことを行いました。

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,
 CONSTRAINT [PK_tblUsersPerm] PRIMARY KEY CLUSTERED 
(
    [ID] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
) ON [PRIMARY]

GO
于 2013-05-05T08:12:53.667 に答える