ad

excel图表制作:制作具有数据导航功能的用户窗体-英雄云拓展知识分享

匿名投稿 9764 2024-06-11

本文述如何连接用户窗体与ADO记录集,终究创建一个与Access窗体类似的用户窗体,可以导航至前一条记录、下一条记录、第一条记录、最后一条记录,等等。

设计用户窗体

在VBE中,插入一个用户窗体,在其中添加文本框、按钮、标签等控件,以下图1所示。

图1

这个用户窗体中的控件及相应的名称以下:

  • 用户窗体名称:ufEmployee
  • 用户窗体标题:员工记录
  • 在用户窗体中,从上至下,从左至右,创建下面的控件:
  • 员工ID文本框名称:tbxEEID
  • Tag:Field0
  • 姓氏文本框名称:tbxLastName
  • Tag:Field1
  • 名字文本框名称:tbxFirstName
  • Tag:Field2
  • 诞生日期文本框名称:tbxBirthDate
  • Tag:Field3
  • 雇用日期文本框名称:tbxHireDate
  • Tag:Field4
  • 命令按钮名称:cmdFirst
  • Caption: <<
  • Tag:ButtonFirst
  • 命令按钮名称:cmdPrev
  • Caption: <
  • Tag:ButtonPrev
  • 命令按钮名称:cmdNext
  • Caption: >
  • Tag:ButtonNext
  • 命令按钮名称:cmdLast
  • Caption:
  • Tag:ButtonLast

excel图表制作:制作具有数据导航功能的用户窗体-英雄云拓展知识分享

编写代码

下面,编写代码来管理这个用户窗体,即处理数据和用户窗体中的控件。

这个用户窗体需要6个事件:Initialize(当用户窗体打开时)、QueryClose(当用户窗体关闭时),和每一个命令按钮的单击事件。

需要使用事件代码将记录集确当前记录显示在文本框中、和禁止用户毛病操作,例如当处于第一条记录时单击命令按钮cmdPrev(<)。

在用户窗体模块中,声明两个模块级的变量:

  • Dim mADOCon As ADODB.Connection
  • Dim mADORs As ADODB.Recordset

使用模块级变量的缘由是:当用户窗体开启时,Connection和Recordset对象在作用域内。

下面的进程使用记录集中当前记录的数据填充文本框。

  • Private Sub FillTextBoxes()
  • Dim cTxtBx As Control
  • Dim lFldNo As Long
  • For Each cTxtBx In Me.Controls
  • If cTxtBx.Tag Like “Field*”Then
  • lFldNo = Mid(cTxtBx.Tag, 6)
  • cTxtBx.Text = mADORs.Fields(lFldNo)
  • End If
  • Next cTxtBx
  • End Sub

记得前面在设计用户窗体时给文本框设置的Tag属性吗,我们将继续深入。接下来看看我们为何设置这个属性。

上面的程序代码遍历用户窗体中所有的控件,如果控件具有像Field0、Field1、Field2等情势的标签(tag),就从记录集中获得与标签相同名称字段的数据来填充相应的文本框。当打开用户窗体或单击任一按钮时,需要改变文本框来响应事件。因此,这种情况下,Initialize事件和4个按钮中任一按钮的单击事件都将调用上面的程序。在调用上面的程序之前,这些事件将首先设置当前记录。

上述程序代码的一个好处是,你可以添加和删除文本框,而不必修改代码。条件是只要正确填写了Tag属性,就会正确填充文本框。但是,不会检查来确保字段实际存在。举例来看,如果设置一个Tag为Field10,但记录集唯一9个字段,那就会弄混淆。在示例代码中,为了简单起见,我们不会创建这样明确的毛病检查代码。

下面的程序代码控制命令按钮(CommandButtons)。假设已到达第一条记录,我们不想提供给用户到达第一条记录或前一条记录的按钮选项,由于已是第一条记录,没有更前一条记录了。一样地,当前记录是最后一条记录时,禁用最后一条记录和下一条记录按钮。每次触发一个事件时,都要确保按钮响应当前的状态。

  • Private Sub DisableButtons(ParamArray aBtnTags() As Variant)
  • Dim i As Long
  • Dim ctl As Control
  • For Each ctl In Me.Controls
  • ctl.Enabled = True
  • For i = LBound(aBtnTags) To UBound(aBtnTags)
  • If ctl.Tag = aBtnTags(i) Then
  • ctl.Enabled = False
  • Exit For
  • End If
  • Next i
  • Next ctl
  • End Sub

对上面的程序,使用了ParamArray参数,可以发送任意数量想要禁用的按钮的名称。举例来看,如果想禁用第一个和前一个按钮,就能够像下面这样调用该程序:

DisableButtons “ButtonFirst”, “ButtonPrev”

除传递给参数的按钮外,每一个按钮都可用,即能被用户单击。如果不带任何参数调用该程序,那末所有的按钮都是可用的。该程序遍历用户窗体中的所有按钮,将其Tag属性与参数列表对照,如果发现匹配则禁用该控件。该程序不会辨别文本框、命令按钮或任何其它类型的控件。你只需确保使用了正确的Tag属性,以避免禁用了你不想禁用的控件。

现在,创建记录集,确保使用有用的信息来填充文本框。

不管用户窗体在甚么时候打开都会触发Initialize事件,此时合适创建记录集。这样,不管什么时候用户窗体显示,我们都知道有可用的记录集存在。

  • Private Sub UserForm_Initialize()
  • DimsConn As String
  • Dim sSQL As String
  • Dim sDbPath As String
  • Dim sDbName As String
  • ‘存储数据库的路径和名称
  • ‘可以修改成你自已的路径和名称
  • sDbPath =”C:\Users\Administrator\Documents\”
  • sDbName = “Northwind”
  • ‘存储连接字符串
  • sConn = “DSN=MS Access Database;”
  • sConn = sConn & “DBQ=” &sDbPath & “” & sDbName & “.mdb;”
  • sConn = sConn & “DefaultDir=”& sDbPath & “;”
  • sConn = sConn &”DriverId=281;FIL=MS Access;MaxBuffersize=2048;PageTimeout=5;”
  • ‘存储SQL语句
  • sSQL = “SELECT 雇员.雇员ID,雇员.姓氏,”
  • sSQL = sSQL & “雇员.名字,雇员.诞生日期,雇员.雇用日期 “
  • sSQL = sSQL & “FROM ” &sDbPath & “” & sDbName & “.mdb” & “.雇员” ‘此处要注意如果路径中有空格则需添加单引号来援用
  • ‘创建新的连接和记录集
  • Set mADOCon = New ADODB.Connection
  • Set mADORs = New ADODB.Recordset
  • mADORs.CursorLocation = adUseClient
  • ‘打开连接和记录集
  • mADOCon.Open sConn
  • mADORs.Open sSQL, mADOCon, adOpenDynamic
  • ‘到第一条记录
  • mADORs.MoveFirst
  • ‘调用特定目的进程
  • FillTextBoxes
  • DisableButtons “ButtonFirst”,”ButtonPrev”
  • End Sub

这个程序的大部份代码是设置字符串,那些烦人的连接字符串和SQL语句是难以编写的。其中一种方法是在Excel中创建外部数据表(数据>获得外部数据),然后读取Connection和CommandText属性。接着,做一些修改,例如从连接字符串中移除ODBC和使用变量代替数据库信息。一旦建立了外部数据表,可在立即窗口输入:

  • Print Sheet1.QueryTables(1).Connection
  • Print Sheet1.QueryTables(1).CommandText

将取得两个长字符串,可以将其复制并粘贴到代码中。也能够像上面程序中一样,将代码分成几个字符串。

当关闭用户窗体时,将触发QueryClose事件。如果用户窗体不打开,就不需要记录集,因此在该事件中要将其释放并清空内存。

  • Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
  • mADORs.Close
  • mADOCon.Close
  • Set mADORs = Nothing
  • Set mADOCon = Nothing
  • End Sub

下面,介绍如何编写命令按钮代码,使记录来回移动。

基本上有两类命令按钮,一类按钮到达记录集的两端即第一条记录和最后一条记录,一类按钮一次移动一条记录。所有的4个命令按钮都做3件事:使正确的记录为当前记录、调用FillTextBoxes进程和调用DisableButtons进程。“移动一条记录”按钮有一个额外的步骤,即决定哪条记录是当前记录。如果是第一条或最后一条记录,需要禁用不同的命令按钮。

  • Private Sub cmdFirst_Click()
  • mADORs.MoveFirst
  • FillTextBoxes
  • DisableButtons “ButtonFirst”,”ButtonPrev”
  • End Sub
  • Private Sub cmdLast_Click()
  • mADORs.MoveLast
  • FillTextBoxes
  • DisableButtons “ButtonLast”,”ButtonNext”
  • End Sub
  • Private Sub cmdNext_Click()
  • mADORs.MoveNext
  • FillTextBoxes
  • If mADORs.AbsolutePosition =mADORs.RecordCount Then
  • DisableButtons “ButtonLast”,”ButtonNext”
  • Else
  • DisableButtons
  • End If
  • End Sub
  • Private Sub cmdPrev_Click()
  • mADORs.MovePrevious
  • FillTextBoxes
  • If mADORs.AbsolutePosition = 1 Then
  • DisableButtons “buttonFirst”,”ButtonPrev”
  • Else
  • DisableButtons
  • End If
  • End Sub

上述程序代码中, MoveNext方法、MoveFirst方法、MovePrevious方法和MoveLast方法都是Recordset对象的方法。

终究的效果以下图2所示。

图2

注意,如果你运行这个用户窗体出现毛病,检查一个是不是在VBE中设置了对Microsoft ActiveXData Objects 2.X Library的援用;或是不是Initialize事件中对数据库的援用路径和名称有误。



选择英雄云云表单=选择更智能的办公工具

>>>>🚀🌟 点击注册 免费试用 更高级的-英雄云企业级云表单 🌟🚀 😃👉🌐>>>>

在现代企业管理中,数据的高效管理和处理至关重要。随着信息技术的不断发展,英雄云云表单已经成为了提高数据录入、管理和分析效率的不可或缺的工具。让我们来深入探讨英雄云-云表单的几大优势。

基础字段:多样性满足业务需求

英雄云云表单中包括了各种基础字段,如单行文本多行文本数字输入框单选框复选框下拉框下拉复选框日期时间分割线等。这些字段的多样性使用户可以根据具体的业务需求,轻松进行文本、数据和时间信息的录入或修改。例如,您可以使用单行文本字段录入员工姓名、产品型号等,或者使用下拉框进行多选,根据不同情况选择更加方便的字段类型。

高级字段:提升工作效率

英雄云云表单还提供了高级字段,如地址图片附件手写签名手机子表关联数据关联查询以及流水号。这些高级字段在基础字段的基础上升级,可帮助用户完成一些琐碎的工作。例如,使用地址字段可以避免逐字打字,而流水号字段可以自动生成规律性的编号,非常适用于合同编号生成等场景。

部门成员字段:精确管理与通讯录的关联

英雄云的部门成员字段允许企业对各个部门的成员进行精确管理。用户可以通过部门成员字段获取通讯录中的部门成员信息,应用于记录报销人、报销部门等场景。这些成员字段还细分为成员单选成员多选,可根据具体需求在通讯录中选择一个或多个成员。

聚合表:数据处理更智能

英雄云聚合表功能用于对已存在的表单数据进行聚合计算,从而得到一张聚合表,后续其他表单可调用聚合表进行数据联动、关联查询和关联数据等操作完成数据处理。这一功能可应用于多种场景,如进销存管理、财务管理和门店零售管理等,帮助企业完成数据处理,提高工作效率。

表单权限设置:灵活管理数据访问

英雄云的表单权限设置允许用户根据企业的具体需求管理表单的访问和操作权限。用户可以根据系统权限或自定义权限对不同成员或团队进行权限设置,以确保数据的安全和合规性。这一功能使企业能够根据变化的业务需求和团队结构,实时调整权限设置。

自定义打印模板:文档输出更便捷

英雄云云表单支持自定义打印模板,可将表单数据转换为可打印的Word文档。用户可以根据自己的需求进行排版和编辑,将产品规格说明书等文档轻松生成。这一功能提供了一种标准化的文档输出方式,简化了信息整理的过程。

综合来看,选择英雄云云表单意味着选择更智能、更灵活、更高效的数据管理工具。无论是提高工作效率,精确管理数据,还是实现数据处理,英雄云云表单都能满足您的多样化需求,助力您的业务发展。

如果您正在寻找一款强大的云表单工具,不妨考虑英雄云,它将为您带来更多的便捷和智能,助您事半功倍。


免责声明:

本网址(www.yingxiongyun.com)发布的材料主要源于独立创作和网友匿名投稿等来源。此处提供的所有信息仅供参考之用。我们致力于提供准确且可信的信息,但不对材料的完整性或真实性作出任何保证。用户应自行验证相关信息的正确性,并对其决策承担全部责任。对于由于信息的错误、不准确或遗漏所造成的任何损失,本网址不承担任何法律责任。本网站所展示的所有内容,如文字、图像、标志、音频、视频、软件和程序等的版权均属于原创作者。如果任何组织或个人认为网站内容可能侵犯其知识产权,或包含不准确之处,请即刻联系我们进行相应处理。

上一篇:excel表格内容打印不完全的方法-英雄云拓展知识分享
下一篇:经常使用Excel Ctrl组合快捷键-英雄云拓展知识分享
相关文章

 发表评论

暂时没有评论,来抢沙发吧~

×