ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 Excel Home精品图文教程库
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
300集Office 2010微视频教程 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 551|回复: 8

[原创] 用VBA写的管理查询ACCESS数据文档的SQL工具

[复制链接]

TA的精华主题

TA的得分主题

发表于 2023-11-1 18:13 | 显示全部楼层 |阅读模式
本帖最后由 老姜007 于 2023-11-3 15:12 编辑

闲来无事,几个月前写的一个VBA小工具,可以打打开ACCESS数据文档,并使用SQL命令进行互动。

基本功能介绍:
1、打开本地的ACCESS数据文档(dbm或accdb)
2、支持有输入密码(如果有密码)
3、使用treeview控件读取当前数据库中的所有表,单击后展开2级(字段)
4、在右侧的区域可测试执行SQL命令,并能存储你常用的SQL命令行(可以滚动选择),也可以即时更新、删除;
5、实现了窗口最大化和恢复功能(不完美)
6、支持最大100行的数据行显示(listbox控件展示)
20231101180745.png
7、鼠标左键按住”结果显示区“,并上下拖动,可自由分割窗口。


应网友要求,增加如下功能:
1、点击左侧”表名“或”列名“,则自动将相应内容添加到右侧命令区
(1)如果右侧命令区有选中内容,则替换选中内容;
(2)如果右侧命令区没有选中内容,则自动添加到命令行的末尾,格式:”表名“后有空格,”列名“后加英文逗号。
2、在命令区选中文字内容,单击鼠标右键,则删除选中内容。
20231101181628.png


2023/11/3:新增一个附件demo3,增加了一个导出CSV文档的功能。



ACCESS_TEST_demo2.zip

63.38 KB, 下载次数: 34

无导出

ACCESS_TEST_demo3.zip

65.41 KB, 下载次数: 34

可导出CSV

评分

4

查看全部评分

TA的精华主题

TA的得分主题

发表于 2023-11-2 09:29 | 显示全部楼层
老姜007,老师能否对于表中的字段,通过双击填入到右侧的SQL语句区域,并连带 逗号  ","这样便于书写速度防止手工输入错误.同时对于列表中表名是否也可以双击填入到右侧SQL区域

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-11-2 09:42 | 显示全部楼层
YANWEI82123300 发表于 2023-11-2 09:29
老姜007,老师能否对于表中的字段,通过双击填入到右侧的SQL语句区域,并连带 逗号  ","这样便于书写速度防止 ...

从技术上来说,实现这样的功能没有问题,demo版由于在2级字段后面也就是node.text上连接了字字段属性,所以无法直接将字段名直接通过双击的方法添加到右侧命令区;还有一个问题就是会与treeview的双击展开树形目录的自有动作(树形展开或收缩)冲突。

TA的精华主题

TA的得分主题

发表于 2023-11-2 09:48 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
厉害啊 学习了

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-11-2 14:19 | 显示全部楼层
YANWEI82123300 发表于 2023-11-2 09:29
老姜007,老师能否对于表中的字段,通过双击填入到右侧的SQL语句区域,并连带 逗号  ","这样便于书写速度防止 ...

修改SQL_FRM窗体代码如下,即可:
  1. Private Sub Table_tree_NodeClick(ByVal Node As msComctlLib.Node)
  2.     If InStr(6, Node.Key, "-") = 0 And Node.Children = 0 Then   '判断Node是否为第1层,其中key格式:Node-1-2-3
  3.         Call Tree_Add_Child(Table_tree, Node.Key, Node.Text)
  4.         Node.Expanded = True
  5.     Else
  6.         If Node.Children > 0 Then                               '判断Node是否为第1层
  7.             'Node.Expanded = False
  8.             'Call Listbox_Init(Me.result_list, Select_SQL(Node.Text), True, 100)
  9.             Me.sql_text = Me.sql_text & Node.Text & " "
  10.         Else
  11.             Me.sql_text = Me.sql_text & Split(Node.Text, " (")(0) & ","
  12.         End If
  13.     End If
  14. End Sub
复制代码

TA的精华主题

TA的得分主题

发表于 2023-11-2 15:33 | 显示全部楼层
老姜007 发表于 2023-11-2 14:19
修改SQL_FRM窗体代码如下,即可:

谢谢非常好,非常快和便捷,期待正式版本分享

TA的精华主题

TA的得分主题

发表于 2023-11-2 15:40 | 显示全部楼层
老姜007 发表于 2023-11-2 14:19
修改SQL_FRM窗体代码如下,即可:

老姜007能否加个命令按钮,将查询后的结果导出excel

TA的精华主题

TA的得分主题

发表于 2023-11-2 18:09 来自手机 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
老姜007 发表于 2023-11-2 09:42
从技术上来说,实现这样的功能没有问题,demo版由于在2级字段后面也就是node.text上连接了字字段属性,所 ...

我是在下面做了一个快捷选择经常字段方式。

另外,还可以,加个 关键词 输入提示。
IMG_20231102_180819.jpg

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-11-3 08:45 | 显示全部楼层
zpy2 发表于 2023-11-2 18:09
我是在下面做了一个快捷选择经常字段方式。

另外,还可以,加个 关键词 输入提示。

不错的主意

评分

1

查看全部评分

您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-6-11 21:40 , Processed in 0.056040 second(s), 17 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表