是否可以从应用过滤器后显示的Access表中的行中获取值?
请求示例:
我有一张表,员工填写项目任务,项目工作时间等。 它是作为表格上的表格制作的。列在Initials,Project number等中的选择有限。人们喜欢通过访问表和查询中的内置过滤器函数对表进行排序。我进行了过滤,因此只有示例中显示的项目LT1075。
如何将这4行作为记录集或类似的东西?我需要在所有小时字段中获取值。我还需要在VBA中只复制那4行并对其进行处理(人们想要的功能)。但是当我使用DAO时,我得到了#34; Unfiltered"表
我如何只获得可见的行?
在excel中,有一个简单的函数,有些是cell_visible,但我无法获得对Access的赦免。
最诚挚的问候,埃米尔。
编辑,试用:
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属性的引用无效"
我有一个线索,因为Me。*功能它不起作用?由于该表是某种子表单。但我在导航面板中只看到一个表单。 (隐藏也显示)。
答案 0 :(得分:2)
您可以使用以下格式的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