MS Access - 使子表单显示单独的查询结果

时间:2016-03-16 05:24:38

标签: vba ms-access access-vba

首先,请注意我需要相当普遍'关于这篇文章中的信息,因为它与工作有关。

目前在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 的结果,两个单独的查询。

再次感谢您的帮助。

2 个答案:

答案 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