VBA记录集:如何轻松处理记录集
Visual Basic for Applications(简称VBA)是一种重要的事件驱动编程语言。它用于创建增强Microsoft Office应用程序套件的程序。Visual Basic for Applications非常适合开发特定的应用程序,无论是办公资源、图形程序、文件排序程序,还是任何其他基于windows的软件程序。今天,在这个中级教程中,我们将查看有用的和经常使用的Recordset函数。您需要对Microsoft Access有基本的了解。如果你是新手,你应该去看看首先做这个介绍性课程的微软访问.对于熟悉VBA的人,你可以做一个快速刷这个VBA教程.
记录集是什么
记录集是在数据库中存储一组记录的结构。这些记录可以是查询的结果,也可以是单个表的内容。修改记录集中存储的信息不会影响实际数据库表中包含的相应信息。记录集作为数据库编程的一个组成部分被广泛使用,其中包括用于应用程序的Visual Basic。
请注意,记录集是一个空白表,它具有无限行和列,完全可以自定义。这包括计算机数据库返回的任何信息,无论大小。好的数据库能够生成和显示记录集。你可以了解更多关于在Excel中管理数据库的信息在这门课。
Microsoft Office Access是一个数据库,允许您使用VBA在Access中创建应用程序。VBA通常用于在MS Office应用程序中实现重复任务的自动化。MS Access是一种关系数据库系统,一般用于小型数据库。选择查询从数据库表中检索数据。记录集读取查询返回的内容。在这里,我们查看一个程序,该程序创建一个表,并使用选择查询查看其内容。你可以从Udemy学习更多关于使用VBA的课程与女士访问。
示例1:如何在查询中使用记录集
子useRecordset()暗strSQL1字符串昏暗dbs1如数据库记录集昏暗tmpStr昏暗rst1字符串设置dbs = CurrentDb tmpStr =“公司| |姓”tmpStr = tmpStr&”名字|“tmpStr = tmpStr&”职位|“tmpStr = tmpStr&“业务电话”调试。PrinttmpStr strSQL1 = "SELECT客户。公司的客户。[姓]," strSQL1 = strSQL1& "[Name], " strSQL1 = strSQL1& "(职称),客户。[商务电话]" strSQL1 = strSQL1& "FROM Customers;"设置rst1 = dbs1.OpenRecordset(strSQL)MoveLast rst1。当不是rst1时。tmpStr = rst1.Fields(0)。值tmpStr = tmpStr& " | " & rst1.Fields(1)。值tmpStr = tmpStr& " | " & rst1.Fields(2)。值tmpStr = tmpStr& " | " & rst1.Fields(3)。值tmpStr = tmpStr& " | " & rst1.Fields(4)。值调试。PrinttmpStr Rst1。MoveNext循环rst1。dbs1关闭。关闭
在这个程序中,声明变量dbs1为数据库对象,rst1为记录集对象。使用SQL select命令查询客户的表。使用查询打开记录集。循环遍历记录集并显示记录直到记录集的末尾。最后,关闭数据库和记录集对象。
示例2:VBA记录集运行一个选择查询
Private Sub runSelectQuery() Dim db1 As Database Dim rcrdSe1t As Recordset Dim strSQL1 As String Dim Xcntr1As Integer Set db1 = CurrentDb strSQL1 = "CREATE TABLE selectQueryData (NumField NUMBER, Tenant TEXT, Apt TEXT);"DoCmd。strSQL1 = "INSERT INTO selectQueryData (NumField, Tenant, Apt) " strSQL1 = strSQL1& "VALUES (1, 'John', 'A');"DoCmd。SetWarnings假DoCmd。RunSQL (strSQL1) strSQL1 = "INSERT INTO selectQueryData (NumField, Tenant, Apt) "" strSQL1 = strSQL1& "VALUES (2, 'Susie', 'B');"DoCmd。SetWarnings假DoCmd。RunSQL (strSQL1) strSQL1 = "INSERT INTO selectQueryData (NumField, Tenant, Apt) " " strSQL1 = strSQL1& "VALUES (3, 'Luis', 'C');" DoCmd.SetWarnings False DoCmd.RunSQL (strSQL1) strSQL1 = "Select selectQueryData.* from selectQueryData " strSQL1 = strSQL1& "WHERE selectQueryData.Tenant = 'Luis';" Set rcrdSet1 = db.OpenRecordset(strSQL1) rcrdSet1.MoveLast rcrdSet1.MoveFirst For Xcntr = 0 To rcrdSet1.RecordCount - 1 MsgBox "Tenant: " &rcrdSet.Fields("Tenant").Value & ", Lives in apt: " & _ rcrdSet1.Fields("Apt").Value rcrdSet1.MoveNext Next Xcntr rcrdSet1.Close db.Close End Sub
在这个程序中,我们声明变量Db1为数据库对象,rcrdSet1为记录集对象,strSQL1为字符串对象,Xcntr为Integer。给string对象分配一个查询字符串。DoCmd。RunSQL是运行字符串来创建表的命令。创建了一个新表。Insert SQl命令用于在表中插入记录。记录集被打开,我们移动到记录集中的第一条记录。显示记录集中的每一条记录,直到我们到达记录集中的最后一条记录。最后,我们关闭记录集对象和数据库对象。
例3:程序设置特定记录的值
Dim sqlStr1 As String Dim rst1 As Recordset Dim dbs1 As Database Set dbs1 = CurrentDb sQLString = "CREATE TABLE editRecord (F_Name TEXT, L_Name TEXT)"DoCmd。SetWarnings假DoCmd。RunSQL (sQLString) Strsql1 = "INSERT INTO editRecordVALUES('JOhn','Smith')"DoCmd。RunSQL (strsql1) strsql = "INSERT INTO editRecord VALUES('George','Bailey')"DoCmd。RunSQL (strsql1) strsql = "INSERT INTO editRecord VALUES('Glen','Maxwell')"DoCmd。RunSQL (strsql1)设置rst1 = dbs。OpenRecordset("SELECT editRecord.* FROM editRecord") Set rst1 = dbs.OpenRecordset("SELECT editRecord.* FROM editRecord") rst1.Move (2) rst1.Edit rst1.Fields("F_Name").Value = "PAUL" rst1.Update rst1.Close Set dbs = Nothing
在这个程序中,我们声明sqlStr1为字符串变量,rst1为记录集对象,dbs1为数据库对象。使用DoCmd创建一个新表。RunSQL命令。将三条记录插入到表中。通过查询表中的所有记录来创建记录集。我们将记录集移动到记录号3,并将“F_name”字段更新为“Paul”。然后关闭记录集。按“F5”功能键运行子程序。你可能想了解更多关于Microsoft Access的信息通过本课程可以更好地理解这些例子。
示例4:在表中搜索记录
子searchRecords() Dim rst1 As Recordset Dim dbs1 As Database Dim stringToSearch1 As String Set dbs1 = CurrentDb stringToSearch1 = "Dyna" Set rst1 = dbs1。OpenRecordset(“选择客户。设置rst1 = dbs1. dbs1. dbs1. dbs1。OpenRecordset(“选择<表名>。* FROM