ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 关于任意条件从access数据库中提取数据问题的求助

[复制链接]

TA的精华主题

TA的得分主题

发表于 2019-3-9 16:39 | 显示全部楼层 |阅读模式
Ashampoo_Snap_2019.03.09_16h36m44s_003_.png
如上图根据多个条件中的一个或多个或没有条件,从ACCESS数据库中提取数据,求哪位老师帮忙写个代码,非常感谢!
20190309求助.rar (38.29 KB, 下载次数: 180)

TA的精华主题

TA的得分主题

发表于 2019-3-9 17:36 | 显示全部楼层
  1. Sub TEST()
  2. Dim ARR, SQL$, RST As Object
  3. ARR = [B2:H3]
  4. For i = 1 To 7
  5. If ARR(2, i) > "" Then SQL = SQL & " AND " & ARR(1, i) & " like '%" & ARR(2, i) & "%'"
  6. Next
  7. SQL = "SELECT " & Join([transpose(transpose(b5:i5))], ",") & " FROM [物料记录] WHERE " & Mid(SQL, 5)
  8. [B6:I65536] = ""
  9. With CreateObject("adodb.connection")
  10. .Open "Provider=Microsoft.Ace.OLEDB.12.0;data source=" & ThisWorkbook.Path & "\物料记录.mdb"
  11. Set RST = .Execute(SQL)
  12. If Not RST.EOF Then [B6].CopyFromRecordset RST
  13. .Close
  14. End With
  15. MsgBox "ok"
  16. End Sub
复制代码

评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-3-11 08:13 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册

非常感谢前版主的帮助。当所有查询条件为空时,出现下图的错误。能否实现当查询条件全部为空时,提取所有数据?麻烦您了! Ashampoo_Snap_2019.03.11_08h01m49s_001_.png Ashampoo_Snap_2019.03.11_08h02m49s_002_.png

另外一个问题;如果更改查询条件的位置,只提取部分数据,代码如何修改?(本人小白,麻烦i您了!)

Ashampoo_Snap_2019.03.11_08h16m10s_003_.png 20190311求助.rar (40.47 KB, 下载次数: 13)

TA的精华主题

TA的得分主题

发表于 2019-3-11 09:59 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
  1. Private Sub CommandButton1_Click()
  2. Dim ARR, SQL$, RST As Object, temp$
  3. ARR = [B2:H3]
  4. For i = 1 To 7
  5. If ARR(2, i) > "" Then temp = temp & " AND " & ARR(1, i) & " like '%" & ARR(2, i) & "%'"
  6. Next
  7. SQL = "SELECT " & Join([transpose(transpose(b5:i5))], ",") & " FROM [物料记录] "
  8. If Len(temp) Then SQL = SQL & " WHERE " & Mid(temp, 5)
  9. [B6:I65536] = ""
  10. With CreateObject("adodb.connection")
  11. .Open "Provider=Microsoft.Ace.OLEDB.12.0;data source=" & ThisWorkbook.Path & "\物料记录.mdb"
  12. Set RST = .Execute(SQL)
  13. If Not RST.EOF Then [B6].CopyFromRecordset RST
  14. .Close
  15. End With
  16. MsgBox "ok"
  17. End Sub
复制代码

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2019-3-11 10:00 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
另外一个问题;如果更改查询条件的位置,只提取部分数据,代码如何修改?(本人小白,麻烦i您了!)

数据格式不规范,那你就一项一项的连起来吧,不仅仅是界面难看的问题

TA的精华主题

TA的得分主题

发表于 2019-3-11 11:02 来自手机 | 显示全部楼层
For i = 1 To 7
If ARR(2, i) > "" Then SQL = SQL & " AND cstr(" & ARR(1, i) & ") like '%" & ARR(2, i) & "%'"
Next

我记得日期型好像有要 # 定界的,可能要转换一下

评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-3-11 12:12 | 显示全部楼层

谢谢您的帮组;
还有两个问题请您帮忙:1、数据库不是在相同文件夹,放在共享平台上,并设置密码,如:数据库放在“\\190.250.37.21\数据库\物料记录.mdb”,文件打开密码为“123456”,如何读取?
2、仅提取部分数据,如下图


麻烦您了!
Ashampoo_Snap_2019.03.11_12h09m12s_005_.png

Ashampoo_Snap_2019.03.11_12h02m40s_004_.png
20190311求助.rar (1.08 MB, 下载次数: 20)

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-3-11 12:13 | 显示全部楼层
zpy2 发表于 2019-3-11 11:02
For i = 1 To 7
If ARR(2, i) > "" Then SQL = SQL & " AND cstr(" & ARR(1, i) & ") like '%" & ARR(2, i ...

谢谢您的热心帮助

TA的精华主题

TA的得分主题

发表于 2019-3-11 16:03 来自手机 | 显示全部楼层
rio123 发表于 2019-3-11 12:12
谢谢您的帮组;
还有两个问题请您帮忙:1、数据库不是在相同文件夹,放在共享平台上,并设置密码,如: ...


如果在局域网上共享访问数据库,只要将绝对路径更改为 "//计算机名/共享目录名/文件名.MDB" 即可,比如
"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=//access911/floder1/1.mdb;User ID='admin';Password='rr';Jet OLEDB:Database Password='1';"

https://blog.csdn.net/bujanbusan/article/details/6537564

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-3-11 17:18 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
zpy2 发表于 2019-3-11 16:03
如果在局域网上共享访问数据库,只要将绝对路径更改为 "//计算机名/共享目录名/文件名.MDB" 即可,比如 ...

感谢您的热心帮助,但是还是出错,麻烦帮忙修改代码后模拟运行下
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

关闭

最新热点上一条 /1 下一条

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

GMT+8, 2024-4-24 00:31 , Processed in 0.052386 second(s), 18 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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