我有一个带有属性'Data Entry = Yes'的有界表单,它有多个文本框和一个类型为Attachment的字段。
我有"保存"提示确认保存记录的按钮。
在表格上我放置了一个标记为"包括培训"的复选框。
如果复选框被选中,我想添加到同一表,一个额外的记录(除了一个添加通过有界表单)与在有界表单中插入的记录完全相同的信息,除了一个文本字段,这将是不同的,并在VBA代码中定义。
我尝试了CurrentDB.Execute SQL
查询,但它不适用于附件字段类型。
文档中提出的解决方案不适用于这种情况,因为我想在表单上的有界附件字段中包含附件,而不是从磁盘上的路径。
我认为下面的东西可以工作,但当我测试它,它保存记录从有界的形式,但不是额外的一个我想添加的VBA代码,它以错误结束:
424对象必选
VBA代码:
Private Sub Form_BeforeUpdate(Cancel As Integer)
Dim ctl As Control
On Error GoTo Err_BeforeUpdate
If Me.Dirty Then
If MsgBox("Do you want to save the new record?", vbYesNo + vbQuestion, _
"Save Record") = vbNo Then
Me.Undo
MsgBox "Changes discarded."
Else
If Me.checkbox.Value = True Then
Set rsTable = db.OpenRecordset("Table")
With rsTable
.AddNew
!TextField1 = Me.TextField1.Value
!TextField2 = "My Own Text Field"
!AttachmentField = Me.AttachmentField.Value
.Update
.Bookmark = .LastModified
End With
MsgBox "Record was correctly saved."
End If
End If
End If
End Sub
谢谢你的帮助。
编辑:
所以很明显这不是保存新记录的正确方式,但我需要将此记录保存在有界表单上的记录同时(或之后)。我不希望用户再填写一个有界表单。
这样做的原因是因为我输入的是语言认证记录,还有更广泛的认证,包括两个级别。因此,复选框表示"是否也要包括前一个级别?",如果选中,则上传的PDF证书将对第一级和第二级都有效。除了记录的级别名称外,所有信息都是相同的。
我需要这两个单独的记录,因为我也可以单独拥有它们,然后我根据这些单独的语言水平检查条件。
要使用附件字段,您可以使用特殊方法LoadFromFile
将附件放入DB中,SaveFromFile
将附件从DB中取出。您似乎试图将字符串分配给附件字段。
我不知道db
在哪里定义。你是说CurrentDb
吗?
我看到的另一个问题是你在With
块中使用bang符号。Bang表示法是一种字符串查找。如果你想按名称调用项目,你可以这样做:
With CurrentDb.OpenRecordset("Table")
.AddNew
.Fields.Item("TextField1").Value = Me.TextField1.Value
.Fields.Item("TextField2").Value = "My Own Text Field"
.Fields.Item("AttachmentField").LoadFromFile Me.AttachmentField.FileName
.Update
.Bookmark = .LastModified
.Close
End With
这些项目的名称必须正确。
我最终通过创建一个单独的边界来解决这个问题,当我点击"保存"如果复选框被选中,则在原始有界表单上。在这里,用户可以选择是上传与原始有界表单相同的文档,还是上传不同的文档。