当前位置: 首页 > news >正文

数据窗口中的ole控件 pb_工作表数据与UserForm窗口的交互过程中如何实现数据的精确查找...

c84a4280ee70f189bf3cce7a7ebc749f.png

大家好,我们今天继续讲解VBA数据库解决方案,今日讲解的是第82讲:工作表数据与UserForm窗口的交互中:如何实现数据的查找。在讲窗体和数据库的交互对接中,我先后讲解实现了数据的首个记录的显示,下一条记录的显示,最后记录的显示,数据的录入,编辑,保存等功能,今日讲数据的精确查询,也就是说在录入一个唯一值后,把这个唯一值的匹配显示在窗体中。

思路,①在UserForm窗口上,设置查找按钮,用于指令的下达。

②在弹出UserForm窗口后,EXCEL文件要隐藏。

③要考虑到按钮之间的作用,在弹出对话框后只能显示查找、退出按钮。

下面我们首先实现UserForm窗体:在上一讲的基础上我这次增加的是“查找”按钮:

51568321c33a747696f09cdcc73b83f2.png

下面看我的代码:

1 从EXCEL窗口进入人机交互窗口:

Sub mynzRecords_82() '将工作表数据变成记录集,并实现利用UserForm窗口进行查找数据

Application.Visible = False

UserForm1.Show

End Sub

代码解释:上述代码完成从EXCEL界面到人机交互UserForm窗体,这时的Application.Caller是7.

2 “查找”按钮响应的代码:

Private Sub CommandButton7_Click() '查找,显示

UserForm1.TextBox2.Value = ""

UserForm1.TextBox2.Value = ""

UserForm1.TextBox3.Value = ""

MsgBox ("请录入员工编号,然后按下回车键!")

UserForm1.TextBox1.SetFocus

End Sub

3 回车键响应的代码:

Private Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)

If KeyCode = 13 Then

If UserForm1.TextBox1.Value = "" Then MsgBox "员工编号不能为空": Exit Sub

Dim cnADO, rsADO As Object

Dim strPath, strSQL As String

Dim myData() As Variant

Set cnADO = CreateObject("ADODB.Connection")

Set rsADO = CreateObject("ADODB.Recordset")

strPath = ThisWorkbook.FullName

cnADO.Open "provider=Microsoft.ACE.OLEDB.12.0;extended properties='excel 12.0;hdr=yes;imex=1';" _

& "data source=" & strPath

strSQL = "SELECT * FROM [数据7$] where 员工编号=" & UserForm1.TextBox1.Value

rsADO.Open strSQL, cnADO, 1, 3

If rsADO.RecordCount > 0 Then

UserForm1.TextBox2.Value = rsADO.Fields(1)

UserForm1.TextBox3.Value = rsADO.Fields(2)

UserForm1.TextBox1.SetFocus

Else

MsgBox ("您录入的记录不存在")

End If

rsADO.Close

cnADO.Close

Set rsADO = Nothing

Set cnADO = Nothing

End If

End Sub

代码解释:

当按下的不是回车键时Exit Sub,当是回车键时打开数据库,这里用WHERE预计实现了员工编号的精确查找,找到后显示rsADO.Fields(1)和rsADO.Fields(2)字段的值

4 为了实现按钮的控制在窗体激活后有如下代码

If Right(Application.Caller, 1) = 7 Then '查找

UserForm1.CommandButton3.Enabled = False '开始

UserForm1.CommandButton1.Enabled = False '下一条记录

UserForm1.CommandButton4.Enabled = False '最后一条记录

UserForm1.CommandButton5.Enabled = False '编辑记录

'UserForm1.CommandButton7.Enabled = False '查找记录

UserForm1.CommandButton8.Enabled = False '删除记录

UserForm1.CommandButton6.Enabled = False '保存记录

UserForm1.CommandButton9.Enabled = False '录入记录

UserForm1.TextBox2.Enabled = False

UserForm1.TextBox3.Enabled = False

End If

最后我们看代码的运行:

10976b8d81be28730a1c8f2fa9ed28dd.png

67ffb5dd5a9397a22d855407719de072.png

47608780a1b812c6ba69723e5fcb6342.png

今日内容回向:

1 实现精确查找的思路是什么样的?

2 本讲代码中,判断要求实现精确查找传递下来的值是什么?

分享成果,随喜正能量

相关文章:

  • 商业方向的大数据专业_数学专业大数据方向的本科生,考研时该选择大数据还是管理...
  • 高德地图自动生成轨迹_揭秘高德高精度地图,无人驾驶就靠它了
  • python反序列化总结_Python 反序列化安全问题(二)
  • python可以用于工业机器人编程与操作_如何实现工业机器人编程抓取
  • 前后落差大用什么词语_被双子座追到手,你能忍受恋爱前后的反差吗?
  • sheet中没有getcolumns()方法吗_Excel中Enter键使用技巧,这5种方法你都知道吗
  • 淮北市第四届机器人比赛_科技引领 | 沧浪中学承办2020年第四届苏州市青少年人工智能挑战赛...
  • 汽车人机工程学_7万块的国产宝骏530还想跟我谈人机工程学?
  • python干什么工作轻松点_学完Python能做什么工作?
  • 四参数坐标转换c++_写给测绘新手,四参数与七参数坐标转换含义及区别
  • nacos 配置不会动态刷新_真香系列:聊聊SpringCloud Nacos服务配置中心
  • eclipse配置python解析器_python编辑器:Eclipse PyDev安装的步骤解析
  • python生成列表作为全局列表_如何在python中定义全局列表
  • 如何保存十个以上配方_“前男友”放冰箱,配方师听了都流泪......
  • angular js创建表单_Angular-Formly:在用户单击时动态添加表单字段
  • 【译】JS基础算法脚本:字符串结尾
  • 分享一款快速APP功能测试工具
  • Angular数据绑定机制
  • centos安装java运行环境jdk+tomcat
  • conda常用的命令
  • express.js的介绍及使用
  • IOS评论框不贴底(ios12新bug)
  • Java IO学习笔记一
  • Java 最常见的 200+ 面试题:面试必备
  • java架构面试锦集:开源框架+并发+数据结构+大企必备面试题
  • JS变量作用域
  • laravel 用artisan创建自己的模板
  • mysql中InnoDB引擎中页的概念
  • ⭐ Unity 开发bug —— 打包后shader失效或者bug (我这里用Shader做两张图片的合并发现了问题)
  • windows下mongoDB的环境配置
  • 排序算法之--选择排序
  • 推荐一个React的管理后台框架
  • Python 之网络式编程
  • ​一文看懂数据清洗:缺失值、异常值和重复值的处理
  • #HarmonyOS:Web组件的使用
  • #ifdef 的技巧用法
  • #pragma 指令
  • #我与Java虚拟机的故事#连载18:JAVA成长之路
  • #中的引用型是什么意识_Java中四种引用有什么区别以及应用场景
  • %3cscript放入php,跟bWAPP学WEB安全(PHP代码)--XSS跨站脚本攻击
  • (1) caustics\
  • (2)STL算法之元素计数
  • (Note)C++中的继承方式
  • (差分)胡桃爱原石
  • (附源码)spring boot校园健康监测管理系统 毕业设计 151047
  • (区间dp) (经典例题) 石子合并
  • (三)模仿学习-Action数据的模仿
  • (四) 虚拟摄像头vivi体验
  • (四)汇编语言——简单程序
  • (一)为什么要选择C++
  • (转)scrum常见工具列表
  • **Java有哪些悲观锁的实现_乐观锁、悲观锁、Redis分布式锁和Zookeeper分布式锁的实现以及流程原理...
  • ./include/caffe/util/cudnn.hpp: In function ‘const char* cudnnGetErrorString(cudnnStatus_t)’: ./incl
  • .Net CF下精确的计时器
  • .net core使用ef 6