数据库Visual Basic for Applications或VBA是一个重要的事件驱动编程语言。它用于创建增强Microsoft Office套件应用程序的程序。Visual Basic for Applications非常适合开发特定应用程序,无论这些是办公资源,图形程序,文件排序程序还是任何其他基于Windows的软件程序。今天,我们在这个中间级教程中查看有用和常用的Recordset函数。您需要基本熟悉Microsoft Access的熟悉程度。如果你是新的,你应该首先为Microsoft Access进行此介绍性课程。对于熟悉VBA的人,你可以用这个VBA教程快速刷新

什么是记录集

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

请注意,Recordset是一个空白表,它是完全自定义的无限行和列。这些包括计算机数据库返回的任何信息,无论多么小或大。良好的数据库具有生成和显示记录集的能力。你可以了解有关Excel中管理数据库的更多信息在本课程中。

Microsoft Office Access,一个数据库,允许您使用VBA在访问中创建应用程序。VBA通常用于自动化MS Office应用程序中的重复任务。MS访问是一个通常用于较小数据库的关系数据库系统。SELECT查询从数据库表中检索数据。Recordset读取查询返回的内容。在这里,我们查看一个程序创建表并使用SELECT查询查看其内容。你可以从Udemy乘坐这门课程来学习有关使用VBA的更多信息使用MS访问。

示例1:如何在查询中使用Recordset

sub userecordset()dim strsql1作为数据库dim rst1作为记录集Dimpt1作为StringSet DIMPSTR作为String Set DBS = CurrentDB TMPSTR =“公司|”TMPSTR = TMPSTR&“名字|”TMPSTR = TMPSTR和“作业标题|”TMPSTR= tmpstr&“business phone”debug.printtmpstr strsql1 =“选择customers.company,客户。[姓氏],”strsql1 = strsql1和“客户”。[名字],“strsql1 = strsql1和”客户。[职称],客户。[商务电话]“strsql1 = strsql1&”来自客户;“设置rst1 = dbs1.openrecordset(strsql)rst1.movelast rst1.movefirst do not rst1.eof tmpstr = rst1.fields(0).value tmpstr = tmpstr&“|”&rst1.fields(1).value tmpstr = tmpstr&“|“&rst1.fields(2).value tmpstr = tmpstr&”|“&rst1.fields(3).value tmpstr = tmpstr&”|“&rst1.fields(4).value debug.printtmpstr rst1.movenext循环rst1。关闭dbs1.close.

在此程序中,将变量DBS1视为数据库对象,RST1作为Recordset对象。使用SQL SELECT命令查询客户的表。使用查询打开Recordset。循环通过Recordset并显示记录到记录集的末尾。在最后,关闭数据库和记录集对象。

示例2:要运行SELECT查询的VBA Recordset

私有子RunselectQuery()dim db1作为数据库dim rcrdse1t作为记录集dim strsql1作为字符串dim xcntr1as整数设置db1 = currentdb strsql1 =“create table selectquerydata(numfield编号,租户文本,apt文本);”docmd.runsql(strsql1)strsql1 =“插入SelectQueryData(Numfield,租户,APT)”strsql1 = strsql1&“值(1,'约翰','a');”docmd.setwarnings false docmd.runsql(strsql1)strsql1 =“插入SelectQueryData(Numfield,租户,APT)”strsql1 = strsql1&“值(2,'susie','b');”docmd.setwarnings false docmd.runsql(strsql1)strsql1 =“插入SelectQueryData(Numfield,租户,apt)“strsql1 = strsql1&”值(3,'luis','c');“docmd.setwarnings false docmd.runsql(strsql1)strsql1 =”select selectquerydata。* from selectquerydata“strsql1 = strsql1&”,其中selledquerydata.tenant='luis';“set rcrdset1 = db.openrecordset(strsql1)rcrdset1.movelast rcrdset1.movefirst for xcntr = 0到rcrdset1.recordcount  -  1 msgbox”租户:“&rcrdset.fields(”租户“)。价值&”,生活在apt:“&_ rcrdset1.fields(”apt“)。值rcrdset1.movenext next xcntr rcrdset1.close db.close结束子

在此程序中,我们将变量DB1作为数据库对象,RCRDSet1作为Recordset对象,strsql1作为String对象和Xcntr作为整数。字符串对象被分配一个查询字符串。docmd.runsql是运行字符串以创建表的命令。创建了一个新表。插入SQL命令用于在表中插入记录。打开RecordSet,我们将转移到记录集中的第一个记录。在记录集中显示每个记录,直到我们达到记录集的最后一记录。最后,我们关闭Recordset对象和数据库对象。

示例3:设置特定记录值的程序

Dim sqlstr1作为Recordset dim rst1作为记录集dim dbs1作为数据库集dbs1 = currentdb sqlstring =“create table eDitrecord(f_name text,l_name text)”docmd.setwarnings false docmd.runsql(sqlstring)strsql1 =“插入到editrocordvalues('John'),'smith')“docmd.runsql(strsql1)strsql =”插入到editrocord值('george','bailey')“docmd.runsql(strsql1)strsql =”插入到editrocord值('glen','maxwell'))“docmd.runsql(strsql1)设置rst1 = dbs.openrecordset(”选择editrocord. * from editecord“)设置rst1 = dbs.openrecordset(”选择editrocord。来自editrocord“)rst1.move(2)rst1.edit rst1.fields(“f_name”)。value =“paul”rst1.update rst1.close set dbs =没有

在此程序中,我们将SQLSTR1声明为String变量,RST1为Recordset对象和DBS1作为数据库对象。使用docmd.runsql命令创建一个新表。将三个记录插入表中。通过查询表以获取Allits记录来创建Recordset.we将记录设置为记录编号3并将“f_name”字段更新为“paul”。然后关闭记录集。按“F5”功能键运行子程序。你可能想要了解有关Microsoft Access的更多信息通过本课程更好地了解这些例子。

示例4:搜索表中的记录

Sub SearchRecords()Dim RST1作为记录集DIM DBS1作为数据库DIM StringTOSearch1作为String Set DBS1 = CurrentDB StringTOSearch1 =“Dyna”设置RST1 = DBS1.OpenRecordset(“选择客户”。“来自客户”)SET RST1 = DBS1.OpenRecordset(“选择<表名>。*来自“)rst1.movefirst在不是rst1.eof,如果rst1.fields(”名字“)。值= stringtosearch1然后msgbox”找到“和stringtosearch&”在记录编号中:“&rst1。AbsolutePosition rst1.MoveLast Else Rst1.MoveNext End If Loop stringToSearch1 = "" If rst1.Fields("").Value = stringToSearch Then rst1.Close dbs1.Close
    

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

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

子Recordsetexample()dim dbtest1作为数据库dim rsrecordset1作为记录集dim sqlstatement1作为String set dbtest1 = opendatabase(“mydatabase.mbd”)设置rsrecordset1 = .openrecordset(“table1”,dbopentable)以sqlstatement1 =“插入到表2值”&rsrecordset1与rsrecordset1 rsrecordset1.movefirst do rsrecordset1.runsql(sqlstatatement1)rsrecordset1.movenext循环,而不是rsrecordset1.eof以结束子结尾

将变量DBTEST1,RSRecordset1,SQLStatatateMent1分别声明为类型数据库,Recordset和String对象。打开Recordset对象读取记录并将值插入数据库表中。此操作终止到达记录集的末尾。在结束时关闭数据库和Recordset对象。

示例6:如何使用VBA将数据从Excel导入访问权限

子ImportexCeldata()将Dim XLAPP为Excel.Application Dim XLBK作为Excel.Workbook Dim XLSH作为Recovel.Worksheet Dim dbrst1作为数据库Dim SQLStras String Set DBS1 = CurrentDB Set XLAPP = Excel.Application Set XLBK = XLAPP.WORKBOOKS。打开(“c:\ temp \ datatoImport.xlsx”)set xlsht = xlbk.sheets(1)sqlstr =“create table exceldata(colormon text,columntwo text)”docmd.setwarnings false docmd.runsql(sqlstr)set dbrst1 = dbs.openrecordset(“Exceldata”)dbrst1.addnew xlsht.range(“a2”)。选择dbrst1.fields(0).value = xlsht.range(“a2”)。值xlsht.range(“b2”)。选择dbrst1.fields(1).value = xlsht.range(“b2”)。value dbrst1.update dbrst1.close dbs1.close xlbk.close结束子

在开始,我们将XLAPP,XLBK和XLSHT声明为变量,您将用于读取Excel。此外,我们将变量dbrst1声明为记录集对象和dbs1作为数据库对象。使用docmd.runsql执行SQL命令。我们从Excel工作簿获取值,将它们保存到您的表格并更新记录。最终始终记住关闭数据库和Recordset对象。如果你想要更多的手,你可以在MS Access上查看本课程

希望你有乐趣学习Recordset函数。通过创建自己的程序,最好学习编程。通过上面的示例并使用代码。一旦您准备好将其移动到下一级别,您可以通过Simon SEZ获取此高级VBA课程,以获得Microsoft Access。它有更多的果汁和提示,让您的工作与MS访问更容易!

Excel VBA的顶级课程

解锁Excel VBA和Excel宏
Leila Gharani.
4.6 (27,516)
畅销书
Microsoft Excel Macros和Excel VBA硕士
凯尔·佩
4.6 (12,077)
畅销书
Excel Macros&Excel VBA编程为初学者编程
andreas exadaktylos.
4.5 (880)
使用Excel VBA完成Web自动化
丹尼尔强
4.6 (753)
畅销书
MIS培训 - authad Excel +宏+访问+ SQL
喜人·德汉尔
4.3 (370)
终极Excel VBA.
马克塔尔伯特
4.6 (3,269)
Excel VBA编程 - 完整指南
Boris Paskhaver.
4.6 (3,789)
Microsoft Excel VBA简介
凯尔·佩
4.7 (1,184)
Excel与Microsoft Excel VBA用户表单
凯尔·佩
4.6 (1,211)

更多Excel VBA课程

赋予你的团队。引领行业。

通过Udemy为Business获取组织的在线课程和数字学习工具库的订阅。

请求演示