MS访问INSERT INTO变量

时间:2012-10-24 20:24:34

标签: ms-access

我必须创建一个审计跟踪,可以跟踪INSERT INTO之后的字段,但是,我无法获得“values”中的表达式表示进入字段的任何变量,只有VALUES中的表达式。例如,带有数值的两个条目为我提供数值,其他条目给我一个字符串,例如Form.RecordSource = clientName

db.Execute "INSERT INTO tblAudit ([RecordID], [AuditWho], [AuditWhen], [AuditWhat],     [AuditFrom], [AuditTo]) VALUES ('1', '2', 'Now()', 'Form.RecordSource = clientName' , ' Me.ClientName.Value ', '  Me.clientNameTextBox.Value  ')"

2 个答案:

答案 0 :(得分:3)

至少你需要做这样的事情:

Dim SQL as string

SQL = "INSERT INTO tblAudit ([RecordID], [AuditWho], [AuditWhen], [AuditWhat],     [AuditFrom], [AuditTo]) VALUES ('1', '2','" & Now() & "', 'ClientName' , '" & Me.ClientName.Value & "', '" & Me.clientNameTextBox.Value & "')"

db.Execute SQL

要更加“健壮”,您应该为AuditFromAuditTo值声明变量,并在尝试执行插入之前验证输入的数据是否为“ok”:

Dim SQL as string
dim strAuditFrom as string
Dim strAuditTo As String

strAuditFrom = Me.ClientName.Value & ""
strAuditTo = Me.ClientNameTextBox.Value & ""

if strAuditTo = vbNullString then
  'Alert the user or throw an error perhaps?
end if

sql = "INSERT INTO tblAudit ([RecordID], [AuditWho], [AuditWhen], [AuditWhat],   [AuditFrom], [AuditTo]) VALUES ('1', '2','" & Now() & "', 'ClientName' , '" &strAuditFrom & "', '" & strAuditTo & "')"

db.Execute sql

答案 1 :(得分:1)

您正在使用单个qoutes定义要插入的文本。要从控件中获取值并将其包含在查询中,您需要使用双qoute转义字符串,使用&符号连接字符串,找到控件的值,并使用ampsand和double qoute继续字符串。例如:

db.Execute "INSERT INTO tblOne (Field1, Field2) VALUES ('literal text','" & ctlSomething & "')"