我的标志

数据库Visual Basic for Applications(简称VBA)是一种重要的事件驱动编程语言。它用于创建增强Microsoft Office应用程序套件的程序。Visual Basic for Applications非常适合开发特定的应用程序,无论是办公资源、图形程序、文件排序程序,还是任何其他基于windows的软件程序。今天,在这个中级教程中,我们将查看有用的和经常使用的Recordset函数。您需要对Microsoft Access有基本的了解。如果你是新手,你应该去看看首先做这个介绍性课程的微软访问.对于熟悉VBA的人,你可以使用本VBA教程进行快速复习

记录集是什么

记录集是在数据库中存储一组记录的结构。这些记录可能是查询的结果,也可能是单个表的内容。修改记录集中存储的信息不会影响实际数据库表中包含的相应信息。记录集被广泛用作数据库编程(包括Visual Basic for Applications)的一个组成部分。

请注意,记录集是一个空白表,可以使用无限的行和列进行完全自定义。这些信息包括计算机数据库返回的任何信息,无论大小。好的数据库能够生成和显示记录集。你可以了解有关在Excel中管理数据库的详细信息在这门课上。

数据库Microsoft Office Access允许您使用VBA在Access中创建应用程序。VBA通常用于自动化MS Office应用程序中的重复任务。MS Access是一种关系数据库系统,通常用于较小的数据库。select查询从数据库表检索数据。记录集读取查询返回的内容。这里我们看一个程序,它使用select查询创建一个表并查看其内容。你可以从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作为字符串Dim rst1作为记录集Dim dbs1作为数据库集dbs1=CurrentDb sQLString=“创建表editRecord(F_Name TEXT,L_Name TEXT)”DoCmd.SetWarnings False DoCmd.RunSQL(sQLString)Strsql1=“插入editRecordVALUES('JOhn','Smith')”DoCmd.RunSQL(Strsql1)strsql=“插入editRecordVALUES('George','Bailey')”DoCmd.RunSQL(strsql1)strsql=“插入editRecord值('Glen','Maxwell')”DoCmd.RunSQL(strsql1)Set rst1=dbs.OpenRecordset(“从editRecord中选择editRecord.*”)Set rst1=dbs.OpenRecordset(“从editRecord中选择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”。找到记录后,关闭记录集和数据库对象。这关于在Microsoft Access中使用VBA的课程有很多你可能想尝试的例子。

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

Sub-RecordsetExample()Dim dbTest1作为数据库Dim rsRecordset1作为记录集Dim sqlStatement1作为字符串集dbTest1=OpenDatabase(“MyDatabase.mbd”)Set rsRecordset1=.OpenRecordset(“Table1”,dbOpenTable)以sqlStatement1=“INSERT INTO Table2 VALUES”结尾,以rsRecordset1 rsRecordset1.MoveFirst Do rsRecordset1.RunSQL结尾(sqlStatement1)rsRecordset1.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上查看本课程

希望您在学习记录集功能时玩得开心。最好通过创建自己的程序来学习编程。浏览上面的示例并使用代码。一旦你准备好将它提升到下一个级别,你就可以参加这个高级VBA课程的微软访问由西蒙塞兹.它有更多的果汁和提示,使您的工作与MS Access如此多的容易!

最后更新的网页:2020年2月

Excel VBA顶级课程

解锁Excel VBA和Excel宏
莱拉·格拉尼
4.7 (29852)
畅销书
熟练掌握Excel宏和Excel VBA
凯尔·皮尤
4.6 (14,363)
畅销书
最终的Excel VBA数组课程
丹尼尔强
4.5 (489)
Excel VBA编程-完整的指南
鲍里斯·帕斯卡弗
4.7 (3,961)
Excel VBA宏:超消除歧义的Excel VBA编程
格兰特赌博
4.7 (1089)
畅销书
完成Web自动化与Excel VBA
丹尼尔强
4.6 (809)
畅销书
Excel宏和Excel VBA编程初学者
Andreas Exadaktylos
4.6 (947)
评价最高
最终的Excel VBA用户表单与访问数据库
m·穆斯塔法BOLAT
4.7 (161)
最终Excel VBA
马克·塔尔伯特
4.7 (3422)

更多Excel VBA课程

让你的团队。领导行业。

使用Udemy for Business订阅您所在组织的在线课程和数字学习工具库。

请求一个演示