Office中国论坛/Access中国论坛

标题: 【已解决】如何只导出筛选后子窗体显示的记录到XLS [打印本页]

作者: 紫风    时间: 2014-3-4 08:53
标题: 【已解决】如何只导出筛选后子窗体显示的记录到XLS
本帖最后由 紫风 于 2014-3-5 17:04 编辑

昨天搜索了很多例子,没有发现有类似的,故发此求助。
主窗体里有n个子窗体,分别为chd1和chd2...chdn
cbo=1时,chd1.visible=true
cbo=2时,chd2.visible=true
我想刷新后只导出.visible=true的子窗体的筛选记录,可是弄来弄去只能导出.visible=ture的子窗体的全部记录,望大家帮我看看,谢谢了!
以下"" & Me.Text29 & ""是.visible的子窗体名
Private Sub cmd导出_Click()
On Error GoTo err
    DoCmd.OutputTo acOutputForm, "" & Me.Text29 & "", "microsoftexcel(*.xls)", , True
err: Exit Sub
End Sub



作者: 盗梦    时间: 2014-3-4 09:11
Public function funcExport(strSQL As String, strName As String)
    CurrentDb.CreateQueryDef strName, strSQL                                   '通过SQL语句,和一个名称创建查询
    DoCmd.OutputTo acOutputQuery, strName, acFormatXLS, , True     '导出查询的数据到Excel
    DoCmd.DeleteObject acQuery, strName                                         '删除查询
end function

我一般是用上面的函数导出的,当然,还需要你再做错误处理。
你可以把子窗体数据源和筛选条件写成一个SQL语句,并传给这个函数
作者: 紫风    时间: 2014-3-4 11:14
盗梦 发表于 2014-3-4 09:11
Public function funcExport(strSQL As String, strName As String)
    CurrentDb.CreateQueryDef strNam ...

谢谢提示,但还是不行……
因为有若干个子窗体,不能将所有数据源写进去啊……
我是每个子窗体都有要导出的可能,只导出指定那个(或那些)……
作者: 盗梦    时间: 2014-3-4 13:55
数据源都写进去,你可以用 union 连接
作者: tzh1600    时间: 2014-3-4 16:38
本帖最后由 tzh1600 于 2014-3-4 16:41 编辑

一种方法是做多个导出控件,分别对应每个子窗体数据源,或者建一选项组控件分别代表各子窗体,导出时根据选项组判定导出数据源,或者遍历各子窗体判定.visible=ture的
作者: 紫风    时间: 2014-3-5 17:03
感谢帮忙,用盗梦提示的方法解决了!
作者: 远山h    时间: 2014-5-15 22:50
盗梦 发表于 2014-3-4 09:11
Public function funcExport(strSQL As String, strName As String)
    CurrentDb.CreateQueryDef strNam ...

能否做个完整示例,sql语句如何传给这个函数?
作者: 盗梦    时间: 2014-5-16 09:41
远山h 发表于 2014-5-15 22:50
能否做个完整示例,sql语句如何传给这个函数?

汗!这个函数的第一个参数就是写SQL语句的
作者: 紫风    时间: 2014-5-16 12:28
远山h 发表于 2014-5-15 22:50
能否做个完整示例,sql语句如何传给这个函数?

strSql=Select ...... From......Where.....




欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/) Powered by Discuz! X3.3