数据库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 ")当不是rst1时。如果rst1 EOF。字段(“名字”)。Value = stringToSearch1 Then MsgBox "Found "& stringtosearch& " in record number: "& rst1。AbsolutePosition rst1。其他MoveLast Rst1。MoveNext结束If循环stringToSearch1 = "" If rst1. txt = ""字段(“<列名称>”)。值= stringToSearch然后是rst1。dbs1关闭。关闭
    

在程序中,我们将变量rst1声明为记录集对象,将dbs1声明为数据库对象。通过查询客户的表来创建记录集。移动到记录集的第一条记录。通过记录集位置递增来循环记录集,并在名字列中搜索“Dyna”。找到记录后,关闭记录集和数据库对象。这关于使用VBA与Microsoft Access的课程有更多的例子,你可能想尝试。

示例5:如何从记录集复制到表中

子RecordsetExample() Dim dbTest1 as Database Dim rsRecordset1 as Recordset Dim sqlStatement1 as String Set dbTest1 = OpenDatabase("MyDatabase.mbd") Set rsRecordset1 = . openrecordset ("Table1",dbOpenTable) End With sqlStatement1 = "INSERT INTO Table2 VALUES" & rsRecordset1 With rsRecordset1 rsRecordset1. sqlStatement1 = "INSERT INTO Table2 VALUES" & rsRecordset1 With rsRecordset1 rsRecordset1。rsRecordset1. runsql (sqlStatement1)MoveNext循环而不是rsRecordset1。EOF End With End Sub

将变量dbTest1、rsRecordset1、sqlStatement1分别声明为类型database、recordset和string对象。打开记录集对象读取记录并将值插入到数据库表中。此操作将终止到达记录集的末尾。最后关闭数据库和记录集对象。

示例6:如何使用VBA从Excel导入数据到Access

subimportexceldata () Dim xlApp As Excel。应用昏暗xlBk作为Excel。工作簿昏暗xlSht作为Excel。工作表Dim dbRst1 As Recordset Dim dbs1 As Database Dim SQLStrAs String Set dbs1 = CurrentDb Set xlApp = Excel。应用程序设置xlSht = xlbac . sheets (1) SQLStr = "CREATE TABLE excelData(columnnone TEXT, columnTwo TEXT)"DoCmd。SetWarnings假DoCmd。RunSQL (SQLStr) Set dbRst1 = dbs.OpenRecordset("excelData")AddNew xlSht.Range (A2)。选择dbRst1.Fields(0)。值= xlSht.Range (A2)。值xlSht.Range (B2)。选择dbRst1.Fields(1)。值= xlSht.Range (B2)。dbRst1价值。更新dbRst1。dbs1关闭。xlBk关闭。关闭End Sub

一开始,我们声明xlApp、xlBk和xlSht作为变量来读取Excel。另外,我们将变量dbrst1声明为记录集对象,将dbs1声明为数据库对象。使用DoCmd。执行SQL命令。我们从Excel工作簿中获取值,将它们保存到表中并更新记录。最后,一定要记得关闭数据库和记录集对象。如果你想要一个更实际的方法,你可以请在MS Access上查看本课程

希望您在学习Recordset功能时很开心。学习编程最好的方法是创建自己的程序。仔细阅读上面的示例并使用代码。一旦你准备好进入下一个阶段,你就可以参加这个高级VBA课程的微软访问由西蒙塞兹.它有更多的果汁和提示,使您的工作与MS Access如此多的容易!

Excel VBA顶级课程

Excel VBA宏:超消除歧义的Excel VBA编程
格兰特赌博
4.5 (987)
畅销书
解锁Excel VBA和Excel宏
莱拉Gharani
4.7 (26766)
畅销书
微软Excel VBA简介
凯尔尤
4.5 (1160)
完成Web自动化与Excel VBA
丹尼尔强
4.7 (735)
畅销书
熟练掌握Excel宏和Excel VBA
凯尔尤
4.5 (11622)
畅销书
最终Excel VBA
马克Talbert
4.7 (3194)
Excel VBA编程-完整的指南
鲍里斯Paskhaver
4.7 (3726)
Excel宏和Excel VBA编程初学者
Andreas Exadaktylos
4.5 (854)
评价最高
Excel与微软Excel VBA用户表单
凯尔尤
4.6 (1180)
Excel VBA练习和真实世界的项目
凯伦Tateosyan
4.4 (220)
Excel宏和VBA初学者
Bluelime学习方案
4.5 (15)

更多Excel VBA课程

让你的团队。领导行业。

通过Udemy for Business订阅您组织的在线课程和数字学习工具图书馆。

请求一个演示