我正在开发一个“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
连接到新数据库后,一切正常,除了一个表由于某种原因删除了主键,因此它变得不可编辑(这是一个词吗?)。这是我使用的新连接字符串:
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
我认为这是所有必要的信息,希望我是对的。现在,我当然可以手动设置主键并使表格再次可编辑,但用户将无法这样做。
有人知道主键有什么问题吗?