我在 Access 2002 中有一个表单,其字段由查询提供。它逐行显示记录数据。最后有一个名为“已确认”的复选框。此表单的目的是让用户确认已查看记录。在复选框的“OnClick”事件中,我有自动填充用户名字段和当前日期字段的代码。有四种不同的记录/通知类型。所有这些都有效。有一种通知类型,类型 2。
当试图确认这种类型的记录时,它必须将用户名和日期输入到当前查询之外的另一个表中。这是代码:
If NotType = 2 Then
strSQL = "INSERT INTO Maintenance (AckBy, AckDate) VALUES('" & AckName & "', '" & AckDate & "');"
'DoCmd.SetWarnings False
'CurrentDb.Execute strSQL, dbSeeChanges
DoCmd.RunSQL strSQL
DoCmd.SetWarnings True
End If
我同时拥有 DoCmd.RunSQL 和 CurrentDb.Execute 的原因是出于测试目的。运行 CurrentDb.Execute 时,我不会收到任何错误,但该表不会填充该记录的这两个值。当我使用 DoCmd.RunSQL 时,我得到一个确认窗口,询问我是否要附加该行。当我说是时,有一个错误指出我无法在追加查询中追加记录。我只想将这些值放入此表中。
更新:在 MS SQL 2008 中创建表 SQL,在 Access 2002 中创建链接表:CREATE TABLE [dbo].[Maintenance](
[MaintenanceID] [int] IDENTITY(1,1) NOT FOR REPLICATION NOT NULL,
[AssetID] [int] NOT NULL,
[MaintenanceDate] [datetime] NULL,
[MaintenanceDescription] [nvarchar](255) NULL,
[MaintenancePerformedBy] [nvarchar](100) NULL,
[MaintenanceCost] [float] NULL,
[NextMaintenanceDate] [datetime] NULL,
[Acknowledged] [bit] NOT NULL,
[AckTimeStamp] [timestamp] NULL,
[AckBy] [varchar](50) NULL,
[AckDate] [datetime2](7) NULL,
CONSTRAINT [PK_Maintenance] PRIMARY KEY CLUSTERED
(
[MaintenanceID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]