我必须创建一个审计跟踪,可以跟踪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 ')"
答案 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
要更加“健壮”,您应该为AuditFrom
和AuditTo
值声明变量,并在尝试执行插入之前验证输入的数据是否为“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 & "')"