首先,请注意我需要相当普遍'关于这篇文章中的信息,因为它与工作有关。
目前在MS Access中我有一个数据库,它使用一张大表来存储数据(比如说 tblDATASHEET )以及其他表。查询用于使用 type_id 选择相关的特定列。
从列表框中搜索用户,并收集 type_id 。
例如,如果 type_id = TYP1,则运行 qryTYP1 。 qryTYP1 可能需要 tblDATASHEET 中的第1,2,5,6和11列。 qryTYP2 可能只需要 tblDATASHEET 中的第3,4和5列。
一切正常。因此,当搜索用户并运行相应的查询时,将显示该用户的记录列表。从这里我希望能够创建/编辑显示的记录。
这是我的问题,在 tblDATASHEET 的查询结果中,当要启动/添加新行时,我希望从上一行自动填充某些字段。这些字段是一般字段,如名称,标题,日期等。这可能吗?
如果我过于简短,请告诉我,我可以进一步了解详情。我花了很多时间来研究VBA和数据宏,并且已经接近但不够接近。
谢谢你, Dre24。
修改 所以我决定采用在表单上的子表单中显示查询结果的方法。
现在我的问题是,如何根据输入使子窗体显示备用查询?
例如,子表单可能需要显示来自 qryTYP1 或 qryTYP2 的结果,两个单独的查询。
再次感谢您的帮助。
答案 0 :(得分:0)
您可以在包含搜索结果的表单上添加“复制到新记录”等按钮。通过单击此按钮捕获找到的行的ID,滚动到/添加/插入新的空记录并将找到的记录中的所需数据复制到新记录。
答案 1 :(得分:0)
以下是使用按钮点击复制记录的方法:
Private Sub btnCopy_Click()
Dim rstSource As DAO.Recordset
Dim rstInsert As DAO.Recordset
Dim fld As DAO.Field
If Me.NewRecord = True Then Exit Sub
Set rstInsert = Me.RecordsetClone
Set rstSource = rstInsert.Clone
With rstSource
If .RecordCount > 0 Then
' Go to the current record.
.Bookmark = Me.Bookmark
With rstInsert
.AddNew
For Each fld In rstSource.Fields
With fld
If .Attributes And dbAutoIncrField Then
' Skip Autonumber or GUID field.
ElseIf .Name = "SomeFieldNotToCopy" Then
' Ignore this field.
ElseIf .Name = "SomeSpecialField" Then
' Insert fixed or special value.
rstInsert.Fields(.Name).Value = SomeValue
Else
' Copy field content.
rstInsert.Fields(.Name).Value = .Value
End If
End With
Next
.Update
' Go to the new record and sync form.
.MoveLast
Me.Bookmark = .Bookmark
.Close
End With
End If
.Close
End With
Set rstInsert = Nothing
Set rstSource = Nothing
End Sub