代码循环访问MS Access中的所有logging

我需要一个代码来遍历表中的所有logging,所以我可以提取一些数据。 除此之外,是否有可能通过筛选logging进行循环,并再次提取数据? 谢谢!

你应该可以用一个非常标准的DAOlogging集循环做到这一点。 你可以在以下链接看到一些例子:
http://msdn.microsoft.com/en-us/library/bb243789%28v=office.12%29.aspx
http://www.granite.ab.ca/access/email/recordsetloop.htm

我自己的标准循环看起来像这样:

Dim rs As DAO.Recordset Set rs = CurrentDb.OpenRecordset("SELECT * FROM Contacts") 'Check to see if the recordset actually contains rows If Not (rs.EOF And rs.BOF) Then rs.MoveFirst 'Unnecessary in this case, but still a good habit Do Until rs.EOF = True 'Perform an edit rs.Edit rs!VendorYN = True rs("VendorYN") = True 'The other way to refer to a field rs.Update 'Save contact name into a variable sContactName = rs!FirstName & " " & rs!LastName 'Move to the next record. Don't ever forget to do this. rs.MoveNext Loop Else MsgBox "There are no records in the recordset." End If MsgBox "Finished looping through records." rs.Close 'Close the recordset Set rs = Nothing 'Clean up 

在“参考”中,导入DAO 3.6对象引用。

 private sub showTableData dim db as dao.database dim rs as dao.recordset set db = currentDb set rs = db.OpenRecordSet("myTable") 'myTable is a MS-Access table created previously 'populate the table rs.movelast rs.movefirst do while not rs.EOF debug.print(rs!myField) 'myField is a field name in table myTable rs.movenext 'press Ctrl+G to see debuG window beneath loop msgbox("End of Table") end sub 

您可以用不同的方式来查询数据对象,如查询和过滤表格:

Trhough查询:

 private sub showQueryData dim db as dao.database dim rs as dao.recordset dim sqlStr as string sqlStr = "SELECT * FROM customers as c WHERE c.country='Brazil'" set db = currentDb set rs = db.openRecordset(sqlStr) rs.movefirst do while not rs.EOF debug.print("cust ID: " & rs!id & " cust name: " & rs!name) rs.movenext loop msgbox("End of customers from Brazil") end sub 

您还应该查找logging集对象的“筛选”属性,以仅筛选所需的logging,然后以相同的方式与它们交互(请参阅MS-Access代码窗口中的VB6帮助),或创build一个“QueryDef”对象以运行查询和使用它作为一个logging集(也有点棘手)。 告诉我,如果你想要另一个aproach。

我希望我能帮上忙

find一个很好的代码和解释每个语句的注释。 在 – accessallinonefind的代码

 Sub DAOLooping() On Error GoTo ErrorHandler Dim strSQL As String Dim rs As DAO.Recordset strSQL = "tblTeachers" 'For the purposes of this post, we are simply going to make 'strSQL equal to tblTeachers. 'You could use a full SELECT statement such as: 'SELECT * FROM tblTeachers (this would produce the same result in fact). 'You could also add a Where clause to filter which records are returned: 'SELECT * FROM tblTeachers Where ZIPPostal = '98052' ' (this would return 5 records) Set rs = CurrentDb.OpenRecordset(strSQL) 'This line of code instantiates the recordset object!!! 'In English, this means that we have opened up a recordset 'and can access its values using the rs variable. With rs If Not .BOF And Not .EOF Then 'We don't know if the recordset has any records, 'so we use this line of code to check. If there are no records 'we won't execute any code in the if..end if statement. .MoveLast .MoveFirst 'It is not necessary to move to the last record and then back 'to the first one but it is good practice to do so. While (Not .EOF) 'With this code, we are using a while loop to loop 'through the records. If we reach the end of the recordset, .EOF 'will return true and we will exit the while loop. Debug.Print rs.Fields("teacherID") & " " & rs.Fields("FirstName") 'prints info from fields to the immediate window .MoveNext 'We need to ensure that we use .MoveNext, 'otherwise we will be stuck in a loop forever… '(or at least until you press CTRL+Break) Wend End If .close 'Make sure you close the recordset... End With ExitSub: Set rs = Nothing '..and set it to nothing Exit Sub ErrorHandler: Resume ExitSub End Sub 

循环数据,EOF(文件结束)和BOF(文件开始)时,logging集有两个重要的属性。 logging集就像表格,当你循环一个logging时,你就会从logging顺序地移动到logging。 当你在logging中移动时,EOF属性被设置为false,但是在你尝试过去最后一条logging之后,EOF属性变为true。 这与BOF属性的反向工作相同。

当我们达到logging集的极限时,这些属性让我们知道。