Access之VBA教学教程
- 格式:pdf
- 大小:11.15 MB
- 文档页数:90
在Access中,使用VBA(Visual Basic for Applications)调用表是一项常见的任务,可以通过使用`DoCmd.OpenTable`方法来实现。
下面是一个简单的示例,展示如何使用VBA调用表:首先,确保你已经创建了一个表对象,并已经将其名称存储在一个变量中,例如:```vbaDim tbl As TableSet tbl = CurrentDb.OpenTable("YourTableName")```在这里,"YourTableName"是你要调用的表的名称。
接下来,你可以使用`DoCmd.OpenTable`方法来打开表。
例如,你可以创建一个按钮或宏来调用这个方法。
下面是一个示例代码:```vbaSub OpenTable()'调用OpenTable方法打开表DoCmd.OpenTable, "YourTableName"End Sub```在这个示例中,当用户点击按钮或触发宏时,`OpenTable`方法将被调用,打开指定的表。
如果你需要在打开表后执行一些操作,你可以在打开表后使用相应的查询或筛选条件。
例如,你可以使用`DoCmd.RunSQL`方法执行SQL查询,或者使用`DoCmd.SetFilter`方法设置筛选条件。
下面是一个示例代码,展示了如何在打开表后执行查询:```vbaSub OpenTableAndQuery()'调用OpenTable方法打开表DoCmd.OpenTable, "YourTableName"'执行查询DoCmd.RunSQL "SELECT * FROM YourTableName WHERE YourCondition"End Sub```在这个示例中,"YourCondition"是你要设置的筛选条件。
ACCESS-VBA编程第九章VBA使用技巧3第九章VBA使用技巧3Treeview 控件的使用方法建立一个窗体,在窗体上放置如下控件:Treeview 控件:名称Treeview1;Imagelist 控件:名称Imagelist1,并在该控件中放置三张个性图片(32×3 2),建立索引1、2、3;(方法:在Imagelist 控件上单击鼠标右键选择属性)Label 控件:名称分别为Lab(0)、Lab(1),Caption分别为“父节点:”、“子节点:”;Textbox 控件:名称分别为Txt(0)、Txt(1),text都为“”;commandbutton 控件:名称为系统默认,Caption分别为“添加”、“展开”、“收起”、“排序”、“删除”、“退出”;将下列代码加入到代码框:Option ExplicitDim I As IntegerDim J As IntegerDim nodx As NodeDim CunZai As Boolean '定义变量Private Sub Command1_Click()If Txt(0).Text <> "" And Txt(1).Text <> "" Then '不允许建立零字节的父节点和子节点CunZai = FalseJ = TreeView1.Nodes.CountFor I = 1 To TreeView1.Nodes.Count '检查新输入的父节点名称是否存在If TreeView1.SelectedItem.Children > 0 ThenIf Txt(0).Text = TreeView1.Nodes(I).Text Then CunZai = True End IfNext IIf CunZai = True Then '若存在, 则在父节点下建立子节点Set nodx = TreeView1.Nodes.Add(Txt(0).Text, tvwChild, "child" & J,Txt(1).Text, 3)Else ,若不存在,则建立父节点和子节点Set nodx = TreeView1.Nodes.Add(, , Txt(0).Text, Txt(0).Text, 1) Set nodx = TreeView1.Nodes.Add(Txt(0).Text, tvwChild, "child" & J,_Txt(1).Text, 3)End IfTreeView1.RefreshElseIf Txt(0).Text = "" Then MsgBox "请输入父节点名称!", vbInform ation, "警告!"'系统提示ElseIf Txt(1).Text = "" Then MsgBox "请输入子节点名称!", vbInform ation, "警告!"End IfEnd SubPrivate Sub Command2_Click()For I = 1 To TreeView1.Nodes.CountTreeView1.Nodes(I).Expanded = True '展开所有节点Next IEnd SubPrivate Sub Command3_Click()For I = 1 To TreeView1.Nodes.CountTreeView1.Nodes(I).Expanded = False '收起所有节点Next IEnd SubPrivate Sub Command4_Click()TreeView1.Sorted = True '排列顺序End SubPrivate Sub Command5_Click()If TreeView1.SelectedItem.Index <> 1 ThenTreeView1.Nodes.Remove TreeView1.SelectedItem.Index '删除选定的节点End IfEnd SubPrivate Sub Command6_Click()End '退出程序End SubPrivate Sub Form_Load()TreeView1.LineStyle =TvwTreeLines '在兄弟节点和父节点之间显示线TreeView1.ImageList = ImageList1 '链接图像列TreeView1.Style = tvwTreelinesPlusMinusPictureText'树状外观包含全部元素Set nodx = TreeView1.Nodes.Add(, , "蒲子明", "蒲子明", 1)'建立名称为"蒲子明"的父节点,选择索引为1的图像Set nodx = TreeView1.Nodes.Add("蒲子明", tvwChild, "child01", "收件箱", 3)'在"蒲子明"父节点下建立"收件箱"子节点,选择索引为3的图像Set nodx = TreeView1.Nodes.Add("蒲子明", tvwChild, "child02", "发件箱", 3)'在"蒲子明"父节点下建立"发件箱"子节点,选择索引为3的图像CunZai = FalseEnd SubPrivate Sub TreeView1_Expand(ByVal Node As MSComctlLib.Node) Node.ExpandedImage = 2 '节点被展开时,选择索引为2的图像End SubPrivate Sub TreeView1_NodeClick(ByVal Node As MSComctlLib.Nod e)If TreeView1.SelectedItem.Children = 0 Then '检查是否有子节点,0为无For I = 1 To TreeView1.Nodes.CountIf TreeView1.Nodes(I).Selected ThenMsgBox "您选择的是:“" & TreeView1.Nodes(I).FullPath & "”子节点!" '系统提示End IfNext IEnd IfEnd SubTreeView控件示例:Private Sub Form_Load()Dim cnn As New ADODB.Connection, rst As New ADODB.Recordse tDim nods As NodesDim mnode As NodeDim nodef As StringDim hh As StringSet cnn = CurrentProject.Connectionrst.Open "select * from menu order by 菜单号", cnn, adOpenStati crst.MoveFirstDo While Not rst.EOFnodef = rst!菜单号If IsNull(rst!上级菜单) ThenSet mnode = TreeView0.Nodes.Add(, , rst!菜单号, rst!菜单名, 1, 2) Elsenodef = rst!上级菜单Set mnode = TreeView0.Nodes.Add(nodef, tvwChild, rst!菜单号, rs t!菜单名, 3, 4)End Ifrst.MoveNextLoopSet rst = NothingWith TreeView0.Nodes(1).Expanded = TrueEnd WithEnd SubPrivate Sub TreeView0_NodeClick(ByVal Node As Object)Dim varx As Variantvarx = DLookup("[记录]", "menu", "[菜单名]=" & "'" & Node & "'") Me.记录= varxEnd Sub如果盘中不存在文件test.dll,则退出数据库if dir("c:\windows\test.dll")="" thendocmd.quitend if使用Shell 函数来完成一个用户指定的应用程序。
Access基础教程--第八章使用VBA编程本章内容◆VBA编程基础◆创建和设计VBA程序◆VBA程序调试与运行一、VBA编程基础知识在执行简单的操作时,宏可以完成,如窗体的打开与关闭、工具栏的显示和隐藏等。
对于稍复杂一些的任务,则可用Visual Basic for Application进行编程完成。
1.VBA的数据类型下面对VBA中的数据类型、数据类型之间的转换、数据类型的对比进行介绍。
⑴数据类型下表列出VBA中的基本数据类型。
类型名声明符字节————————————————Byte(单字节型)1Integer(整型)% 2Long(长整型)& 4Single(单精度型)! 4Double(双精度型)# 8Currency(货币型)@ 8String(字符型)$ n*1Boolean(布尔型)2Date(日期型)8Variant(变体型)xObject(对象型)4————————————————其中,字节、整型、长整型、单精度、双精度、货币等数据类型都属于数值数据类型,可以进行各种数学运算。
字符型数据类型用来声明字符串。
布尔型数据类型用来表示一个逻辑值,为真时显示True,为假时显示Flase。
日期型数据类型用来表示日期,日期常量必须用#括起来,如#2001/3/26#。
变体型数据类型可以存放系统定义的任何数据类型,如数值、字符串、布尔及日期等,其数据类型由最近放入的值决定。
用户可以使用Type语句定义任何数据类型。
用户自定义数据类型可以包括数据类型数组,或当前定义的用户自定义类型的一种或多种元素。
语法:[ Private | Public ] Type 类型名元素名As 数据类型[ 元素名As 数据类型]……End Type例如:定义班级中学生的基本情况数据类型如下:Public Type StudentsName As String(8)Age As IntegerEnd Type声明变量:Dim Student As Students引用数据:Studen =”张三”Student.Age=15下面是详细参考内容◆Boolean 数据类型Boolean 变量存储为16 位(2 个字节)的数值形式,但只能是True 或是False。
ACCESS-VBA编程第九章VBA使用技巧4第九章VBA使用技巧4怎样使用一个查询获得数据库对象的名称(查询/窗体/表/报表/模块/宏)?查询:Select FROM MsysObjects Where (Left$([Nam e],1)<>"~") AND (MSysObjects.Type)=5 orDER BY MSysObjects.N ame;窗体:Select FROM MsysObjects Where (Left$([Nam e],1)<>"~") AND (MSysObjects.Type)=-32768 orDER BY MSysObj ;表:Select FROM MsysObjects Where (Left$([Nam e],1)<>"~") AND (Left$([Name],4) <> "Msys") AND (MSysObject s.Type)=1 orDER BY ;报表:Select FROM MsysObjects Where (Left$([Nam e],1)<>"~") AND (MSysObjects.Type)= -32764 orDER BY MSysOb ;模块:Select FROM MsysObjects Where (Left$([Nam e],1)<>"~") AND (MSysObjects.Type)= -32761 orDER BY MSysOb ;宏:Select FROM MsysObjects Where (Left$([Nam e],1)<>"~") AND (MSysObjects.Type)= -32766 orDER BY MSysOb ;文件被创建或最后修改后的日期和时间FileDateTime 函数返回一个Variant (Date),此为一个文件被创建或最后修改后的日期和时间。
Access VBA编程单选按钮介绍:单选按钮是一种常见的控件,可以将其用于过滤、排序、分组或进行其他交互操作。
在Access VBA编程中使用单选按钮,可以增强窗体的交互性,并可根据用户的选择来自动更新查询或报告结果。
本文将介绍如何在Access VBA编程中使用单选按钮。
创建单选按钮:在Access窗体上单击“设计视图”按钮,选择“工具箱”中的“单选按钮”。
然后,单击“窗体”视图,将单选按钮添加到窗体上。
接下来,选择“属性”框并为单选按钮命名、设置默认值和选项值。
您还可以为单选按钮添加文本标签,以便用户可以理解其含义。
响应单选按钮事件:在VBA中,单选按钮的值可以存储为True或False。
单选按钮的响应通常基于用户的单击事件。
如果单选按钮未选中,则将其值设置为False;如果选择了单选按钮,则将其值设置为True。
使用Change事件的VBA代码可以捕获所有单选按钮的值,并基于用户的选择来更新查询或报告结果。
示例代码:下面是一个使用单选按钮的简单示例代码,该代码基于用户选择的不同结果,重新计算并显示报告。
在此示例中,单选按钮命名为“销售”,其选项值为“按州”和“按产品类型”。
(请注意,这只是示例代码,并非完整代码)Private Sub SalesOption_Change()If Me.SalesOption.Value = True And Me.StatesOption.Value = False Then'按州组织销售报告'ElseIf Me.SalesOption.Value = False And Me.StatesOption.Value = True Then'按产品类型组织销售报告'End IfEnd Sub小结:Access VBA编程中的单选按钮是一种非常有用的控件,可以将其用于过滤、排序、分组或进行其他交互操作。
通过使用VBA 代码响应单选按钮事件,可以自动更新查询或报告结果。
用VBA制做ACCESS登录系统用VBA制作ACCESS登录系统介绍本文档将指导您使用VBA编程语言制作一个简单的ACCESS登录系统。
通过该系统,用户可以输入用户名和密码进行身份验证,并根据其角色访问不同的功能和数据。
步骤和说明下面是实现ACCESS登录系统的步骤和说明:步骤 1: 创建登录表格首先,打开ACCESS数据库并创建一个新的表格,用于存储用户的登录信息。
表格应包含以下字段:- 用户名(Username):作为主键,用于唯一标识每个用户。
- 密码(Password):用于验证用户身份。
步骤 2: 创建登录表单接下来,创建一个用户登录的表单,以便用户可以输入他们的用户名和密码。
在表单上添加以下控件:- 用户名文本框(TextBox):用于用户输入用户名。
- 密码文本框(TextBox):用于用户输入密码。
- 登录按钮(Button):用于触发登录过程。
步骤 3: 编写VBA代码在表单的VBA编辑器中,编写以下代码来实现登录系统的功能:Private Sub LoginButton_Click()Dim rs As DAO.RecordsetDim strSQL As String' 获取用户输入的用户名和密码Dim username As StringDim password As Stringusername = ernameTextBox.Valuepassword = Me.PasswordTextBox.Value' 构建查询语句,用于验证用户信息strSQL = "SELECT * FROM LoginTable WHERE Username='" & username & "' AND Password='" & password & "'"' 执行查询并判断结果Set rs = CurrentDb.OpenRecordset(strSQL)If Not rs.EOF Then' 登录成功,跳转到主界面DoCmd.OpenForm "MainForm"Else' 登录失败,显示错误消息MsgBox "用户名或密码错误,请重新输入。
第8章编程入门VBAVBA编程入门内容提要8-1VBA VBA概念概念8-2VBA VBA编程基础编程基础8-3 VBA 3 VBA常用语句常用语句8-4 VBA 4 VBA程序流程控制程序流程控制8-5 5 数组数组8-6 VBA 6 VBA与宏与宏8-7 7 小结及练习小结及练习VBA(Visual Basic for Application)是Microsoft Office Microsoft Office系列软件的内置编系列软件的内置编程语言,其语法结构与程语言,其语法结构与Visual Basic Visual Basic编编程语言互相兼容,采用的是面向对象的编程机制和可视化的编程环境。
8-1 VBA 1 VBA概述概述8-1-1 VBA 1 VBA简介简介1.集合和对象VBA VBA中的应用程序是由许多对象组成的,如中的应用程序是由许多对象组成的,如表、窗体、查询等。
对象是帮助构造应用程序的元素,以特定的方式组织这些对象,就形成了应用程序。
数据库窗口把可供选择的对象排列在一起,形成不同的类。
8-1-2 2 面向对象程序设计的基本概念面向对象程序设计的基本概念2.对象的属性、事件和方法2.对象的属性、事件和方法属性属性描述了对象的自身性质。
其格式为:属性==属性值对象名对象名..属性事件事件是指可以发生在一个对象上且能够被该对象所识别的动作。
单击””事如:单击某个命令按钮就产生该按钮的“如:单击某个命令按钮就产生该按钮的“单击件当某个对象发生某一事件后,就会驱动系统去执行预先编好的、与这一事件相对应的一段程序。
方法方法是系统事先设计好的,可以完成一定操作的特殊过程,是附属于对象的行为和动作。
在需要使用的时候可以直接调用。
其调用格式为:对象名..方法名对象名Access Access中除数据库的中除数据库的77个对象外,还提供一个重要的对象:DoCmd DoCmd对象对象除窗体、控件的除窗体、控件的SetFocus(SetFocus(获得控制焦点获得控制焦点))方法外,用得最多得是DoCmd DoCmd对象对象的一些方法。
使用这些方法,可以在法。
使用这些方法,可以在VBA VBA中运行中运行Access Access 的操作。
打开当前数据库中的打开当前数据库中的““雇员雇员””窗体DoCmd.OpenForm "Employees"在数据库窗口中选择在数据库窗口中选择““雇员雇员””窗体DoCmd.SelectObject acForm,"Employees ",True 在数据库窗口中关闭在数据库窗口中关闭““雇员雇员””窗体DoCmd.Close acForm, “Employees ”, acSaveYes 删除数据库中的删除数据库中的““雇员雇员””表DoCmd.DeleteObject "Employees"DoCmd DoCmd 对象的常用方法(参照教材对象的常用方法(参照教材P190P190页)页)新建一个窗体并添加两个命令按钮,1 新建一个窗体并添加两个命令按钮,例8-1运行窗体后,单击第一个按钮,新式一个消息框;单击第二个按钮,退出当前窗体。
页)P191页)(参照教材(参照教材P191通过此例,体会可视化编程、面向对象、事件过程、应用方法等基本概念。
进入进入VBEVBE编程环境编程环境VBEVBE窗口的组成窗口的组成VBEVBE窗口由工具栏、工程资源管理器窗口、窗口由工具栏、工程资源管理器窗口、属性窗口、代码窗口和立即窗口组成。
在VBEVBE环境中编写环境中编写VBAVBA代码代码8-1-3 VBA3 VBA编程环境编程环境标准工具条视图视图Microsoft Access Microsoft Access按钮:切换按钮:切换Access 2000Access 2000窗口窗口 插入按钮:插入模块或过程 运行子过程运行子过程//用户窗体按钮:运行模块中的程序 中断按钮:中断正在运行的程序重新设置按钮:结束正在运行的程序设置模式按钮:在设计模式和非设计模式之间切换 工程资源管理器按钮:用于打开工程资源管理器 属性窗口按钮:用于打开属性窗口对象浏览器按钮:用于打开对象浏览器Microsoft Accsee 插入模块运行子过程/用户窗体设计模式中断重新设计工程资源管理器对象浏览器属性窗口工程窗口-选择对象属性窗口-选择对象的属性代码窗口选择事件VBEVBE编程环境编程环境8-2-1 1 常量、变量常量、变量8-2 VBA 2 VBA编程基础编程基础常量:在程序运行中其存储的值不会改变。
变量:在程序运行中其值可以改变。
VBA VBA使用常量、变量来存储值。
用来保存使用常量、变量来存储值。
用来保存在程序运行期间数据。
常量在程序运行过程中,其值不会被改变的量称VBA中有三类常量:中有三类常量:为常量。
在VBA为常量。
在直接常量如:10,20%,123.0,“AB”,“VBA程序设计”等符号常量系统常量指VBA系统预先定义好的,用户可以直接引用的量。
如:acForm,acQuery,vbOk,vbRed符号常量在程序中,某个常量多次被使用,则可以使用一个符号来代替该常量,这样不仅在书写上方便,而且有效地改进了程序的可读性和可维护性。
VBA VBA中使用关键字中使用关键字Const 声明符号常量声明符号常量。
其格式如下:Const 常量名[类型符号类型符号]=]=常数表达式常数表达式如:Const PI #=#=33.1415926变量变量是内存中的临时单元,存放在程序执行过程中产生的中间结果和最后输出结果。
在程序中使用变量,就要给变量定义名称及类型,即对变量进行声明。
变量命名规则变量名必须以字母或汉字开头,后可跟字母、汉字、数字或下划线组成(不能含有小数点和空个字符的字符串;255个字符的字符串;格),长度不超过格),长度不超过255中的关键字;VBA中的关键字;不能使用VBA不能使用VBA中不区分变量名的大小写;中不区分变量名的大小写;VBA、!、##、$变量名的最后一个字符可以是%%、&、!、变量名的最后一个字符可以是等表示数据类型的声明符。
说明:常量名的命名规则与变量名的命名规则相同8-2-2数据类型与变量的声明2 数据类型与变量的声明中,数据类型用来决定变量在VBAVBA中,数据类型用来决定变量支持多种数据VBA支持多种数据可以保存何种数据。
可以保存何种数据。
VBA类型,为用户编程提供了方便。
1 VBA的数据类型页表88-1 VBA的数据类型参照教材P196参照教材P196页表VBAVBA的数据类型的数据类型数据类型类型声明符存储空间取值范围整型(Integer)%2-32768~32767长整型(Long)&4-2147483648~2147483647单精度浮点型(Single)!4负数:-3.402823E38~-1.401298E1.401298E--45正数:1.401298E1.401298E--45~3.402823E38双精度浮点型(Double)#8负数:-1.79769313486232E308~-4.94065645841247E4.94065645841247E--324正数:4.94065645841247E4.94065645841247E--324~1.79769313486232E308货币型(Currency)@8-922337203685477.5808~922337203685477.5807日期型(Date)8100年1月1日~9999年12月31日字符型(String)$0字符~65400个字符字节型(Byte)10~255逻辑型(Boolean)2True或False对象型(Object)4任何引用的对象变体型(Variant)变量声明用Dim| Static Dim| Static语句显式声明局部变量语句显式声明局部变量格式:格式:Dim Dim 变量名变量名[AS [AS 类型类型]]或Dim Dim 变量名类型符变量名类型符语句中的语句中的““As As 类型类型””子句是可选的。
如果使用该子句,就可以定义变量的数据类型。
未使用,默认变量的类型为变体型(使用,默认变量的类型为变体型(Variant Variant)。
)。
例如:例如:Dim i As integer, sDim i As integer, s 表示声明了一个名为表示声明了一个名为i i 的整型变量和一个名为的整型变量和一个名为s s 的变体型变量。
关键字Dim或Static的区别:Dim 声明:随过程的调用而分配存贮单元,每次调用都对变量初始化;过程体结束,变量的内容自动消失,存储单元释放。
Static 声明:Static 声明的变量,也称为静态变量。
静态变量在程序运行过程中一直保留其值,即每次调用过程,变量保持原来的值。
隐式声明变量未进行上述的声明而直接使用变量,称变量的隐式声明。
采用隐式声明的变量都是变体型(变体型(Variant Variant )。
)。
注意注意::VBA VBA中允许不事先声明而直接使用变量,可以通过中允许不事先声明而直接使用变量,可以通过语句Option Explicit ,来要求所使用的变量必须事先声明,否则事先声明,否则VBA VBA会发出警告信息。
会发出警告信息。
下面是一个简单的程序a,b,其使用的变量a,下面是一个简单的程序,,其使用的变量都没有事先定义。
Sum都没有事先定义SumPrivate Sub Form_Click()Sum=0a=10b=20Sum=a+b"Sum=";;SumPrint"Sum="End Sub先声明变量,,后使用变良好的编程习惯应该是““先声明变量良好的编程习惯应该是,同时也使程序易这样做可以提高程序的效率,量”,这样做可以提高程序的效率中可以强制显式声明,,可以在窗体模。
VBA中可以强制显式声明于调试。
于调试块、标准模块和类模块的通用声明段中加入语句:Option Explicit变量的初始化声明而未赋值的变量的值为:数值型变量初始化为数值型变量初始化为00;字符型变量为零长度字符串;变体型变量初始化为Empty。
Empty。
页)P199页)运算符和表达式(教材P1993 运算符和表达式(教材8-2-3运算符算术运算符连接运算符:&、+(字符串连接)例如:"123" + "456"结果"123456""123" & "456"结果"123456"使用上&与+的区别:例如:"abcdef" & 12345结果为"abcdef12345"abcdef12345""123" & 456结果为"123456"结果为出错"abcdef" +12345"abcdef" +12345 结果为结果为579"123" + 456 结果为"123" + 456关系运算符将两个操作数进行大小比较,结果为逻辑值。