Ms access 仅访问MS Access表中的筛选值
是否可以从应用筛选器后显示的Access表中的行中获取值 请举例说明: 我有一个表格,员工在其中填写项目任务、项目时间等。 它被做成表格上的一张桌子。列在首字母、项目编号等方面的选择有限。人们喜欢通过access表和查询中的内置筛选功能对表进行排序。我进行了筛选,因此示例中只显示了项目LT1075 如何将这4行作为记录集或类似的内容获取?我需要获取所有小时字段中的值。我还需要在VBA中只复制这4行代码,并对其执行一些操作(人们需要的函数)。但是当我使用DAO时,我会得到“未过滤”表中的所有行 如何仅使行可见 在excel中,有一个简单的函数,可以看到单元格,但我找不到访问权限 向你问好,埃米尔 编辑、试用:Ms access 仅访问MS Access表中的筛选值,ms-access,filtering,Ms Access,Filtering,是否可以从应用筛选器后显示的Access表中的行中获取值 请举例说明: 我有一个表格,员工在其中填写项目任务、项目时间等。 它被做成表格上的一张桌子。列在首字母、项目编号等方面的选择有限。人们喜欢通过access表和查询中的内置筛选功能对表进行排序。我进行了筛选,因此示例中只显示了项目LT1075 如何将这4行作为记录集或类似的内容获取?我需要获取所有小时字段中的值。我还需要在VBA中只复制这4行代码,并对其执行一些操作(人们需要的函数)。但是当我使用DAO时,我会得到“未过滤”表中的所有行
Public Sub Test1_Click()
Dim rs As DAO.Recordset
Set rs = Me.RecordsetClone
While Not rs.EOF
' Do calculation stuff on record.
rs.MoveNext
Wend
End Sub
将其置于上图中的“测试1”按钮上
我收到错误:“运行时错误7951-您输入的表达式对RecordsetClone属性的引用无效”
我有一个线索,它不工作,因为我。*功能?因为该表位于某种子窗体中。但我在导航面板中只看到一个表单。(同时显示隐藏)。您可以使用表单的RecordsetClone:
Dim rs As DAO.Recordset
Set rs = Me.RecordsetClone
While Not rs.EOF
' Do calculation stuff on record.
rs.MoveNext
Wend
您可以将记录添加到记录集中:
Public Sub CopyRecords()
Dim rstSource As DAO.Recordset
Dim rstInsert As DAO.Recordset
Dim fld As DAO.Field
Dim strSQL As String
Dim lngLoop As Long
Dim lngCount As Long
strSQL = "SELECT TOP 1 * FROM tblStatus"
Set rstInsert = CurrentDb.OpenRecordset(strSQL)
' rstSource can be any recordset, here the RecordsetClone of the form.
Set rstSource = Me.RecordsetClone
With rstSource
While Not .EOF
With rstInsert
.AddNew
For Each fld In rstSource.Fields
With fld
If .Attributes And dbAutoIncrField Then
' Skip Autonumber or GUID field.
ElseIf .Name = "Total" Then
' Special cases.
' Insert default job code.
rstInsert.Fields(.Name).Value = 0
ElseIf .Name = "PROCESSED_IND" Then
rstInsert.Fields(.Name).Value = vbNullString
Else
' Copy field content.
rstInsert.Fields(.Name).Value = .Value
End If
End With
Next
.Update
End With
.MoveNext
Next
rstInsert.Close
.Close
End With
Set rstInsert = Nothing
Set rstSource = Nothing
End Sub
我想你肯定会想扩大你正在寻找的。答案几乎可以肯定是肯定的,但我真的不确定您想做什么。我添加了一个示例,我希望它足够:)它100%清晰,您基本上希望获得对与表单过滤相同的记录集的访问权限,对吗?没错!我需要它在VBA。但一些变通办法也可以。我尝试对查询进行筛选,然后追加到表中,但追加没有“查看筛选”。有什么建议吗?我不希望从VBA应用筛选器,因为用户希望像往常一样在excel/access中单击来设置筛选器。听起来您的主窗体未绑定,数据位于子窗体中。如果是,并且按钮位于主窗体上,则
Me.RecordsetClone
不是有效的引用,因为主窗体没有记录集(行源)。在这种情况下,您需要获取子窗体的RecordsetClone。这不是一个好主意。当你有一个表单时,为什么要检查记录集?Dsum也是一个选项。逐行几乎从来都不是一个好主意。Dsum肯定可以用于获取所有小时字段中的值部分,但不是真正的仅复制VBA中的这4行并对其执行操作部分。似乎他想要一个包含表单过滤记录集的记录集,以用于其他目的。@Fionnuala:是的。记录在内存中,因此速度非常快。任何其他方法都会再次检索记录。@NewD您可以选择Sum(Field)…
有十几种方法可以获取不正确的数据。问题的关键在于用户对问题的处理方法不正确。