设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

返回列表 发新帖
查看: 3893|回复: 3
打印 上一主题 下一主题

[窗体] “不要和我比懒,我懒得和你比”——浅谈“地狱级”导出数据

[复制链接]
跳转到指定楼层
1#
发表于 2020-3-4 18:00:17 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
今天在论坛上看到有个版友天涯沦落20131发帖求助:如何将当前子窗体数据导出至excel
这个版友应该不算新手了,我很奇怪他为何还会问这类问题。事实上,在Access里导入导出,本不应该成为问题。一般来说,只要有数据源,不管是表还是查询,都可以导出数据。但打开附件的瞬间,我还是给惊到了。不多说,先上图。估计大部分新手都会犯这些错误:

①:没有用子窗体。——请注意,这个是“子窗体”控件,也就是“child”。通常情况下,我们是把子窗体(窗体)拖到主窗体上形成嵌套,这样更方便交互处理。用child控件无可厚非,但应该以部署方便为前提。如何使用child控件布局,可以看看点击这里,这里就不赘述了。
②:留意到这两个子窗体的空格了么?在Access里,有特殊符号(空格也算特殊符号)就有麻烦,有麻烦就会有人去论坛发帖。这个反反复复说了不知道多少次了。看到的没看到的都互相转告一下,重要事情说三遍:字段名,表名,查询名,窗体名,报表名……不要用空格!不要用空格!!不要用空格!!!
③:是不是没在图上看到第三个标识?对的,因为没法标出来。大家看到查询了吗?没有吧?话说,Access连查询都不想创建,你到底想干吗呢?

我也不知道他是不是对Access有什么误解,还是打算把极简主义进行到底。这让我想起一句经典的话,“不要和我比懒,我懒得和你比”。
这里还是想说一句,认认真真把Access基础看看,多看看论坛上的范例。别人是如何实现窗体上数据的导入导出的。例如,“刘小军常用窗体查询”里就有数据导入导出的应用。


我们还是先回到这个问题上来:
1、普通级:如何导出子窗体的数据?——通过读取子窗体上的数据源(查询或表)来导出。
2、噩梦级:如果子窗体没有创建查询呢?——通过读取子窗体上上的SQL语句,创建一个临时查询来导出。
3、地狱级:如果我不想打开子窗体,想通过child控件来切换呢?——通过绝对引用控件来读取子窗体,在根据1和2导出。
4、骨灰级:如果我的子窗体名字有空格呢?——对不起,任务结束。因为对于窗体类,有空格的情况下,没法处理。


接下来看看我们做了什么改变:

附上代码如下:
  1. Private Sub Command16_Click()
  2.     Dim qry As DAO.QueryDef
  3.    
  4.     If Me.子窗体.SourceObject = "人员_统计表子窗体" Then
  5.    
  6.         Set qry = CurrentDb.CreateQueryDef("临时表", Form_人员_统计表子窗体.RecordSource)
  7.         
  8.     Else
  9.          Set qry = CurrentDb.CreateQueryDef("临时表", Form_BOM子窗体.RecordSource)
  10.     End If
  11.    
  12.     DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel12Xml, "临时表", "d:\结果.xlsx", True
  13.     DoCmd.DeleteObject acQuery, "临时表"
  14. End Sub
复制代码


写在最后的话:
事实上,这样写VBA还是不太妥当的。尤其是当数据源越来越多的时候,你准备写多少个“if”呢?在这个时候,我们应该如何处理呢?其实,通过选项卡控件(tab)的页就可以很好地解决这个问题。——有兴趣的版友可以试试。



最后再说一遍,不要觉着麻烦,必要的子窗体还是要创建的。child控件没法直接读取数据源。即便你hard code【硬编码】,通过sourceObject来读取到child的源对象,然后你还是要打开窗体才能读取它的数据源,解决的过程并不轻松。
此外,必要的查询也是应该创建的。虽说查询有255个的限制。但关于展示数据源的查询,个人觉得还是有必要创建的。至于操作查询,如果不想创建,你还可以通过docmd.runsql直接运行SQL语句达到增删改的目的。但选择查询,很多情况下会涉及多个条件变更等等,用VBA代码处理可能有些舍近求远。

也算是学Access这么多年的一点心得吧。听不听得进去,看个人了。


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

评分

参与人数 1经验 +30 收起 理由
admin + 30 (其它)优秀教程、原创内容、以资鼓励、其.

查看全部评分

本帖被以下淘专辑推荐:

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖1 订阅订阅
2#
发表于 2020-3-5 08:09:10 | 只看该作者
强!强!强!强!
回复

使用道具 举报

3#
发表于 2020-3-5 08:53:24 | 只看该作者
roych版说得很对,用特殊符号命名会产生很多不良问题。
另外,在日常文件夹命名、文件命名都尽量避免使用特殊符号为好。
4#
发表于 2021-1-8 13:39:58 | 只看该作者
优秀!!

回复

使用道具 举报

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

本版积分规则

QQ|站长邮箱|小黑屋|手机版|Office中国/Access中国 ( 粤ICP备10043721号-1 )  

GMT+8, 2024-4-19 21:19 , Processed in 0.129981 second(s), 31 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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