Office中国论坛/Access中国论坛

标题: [已解决]如何将选项组按钮的查询条件写入到创建查询中导出EXCEL? [打印本页]

作者: liuqi67    时间: 2016-10-14 09:36
标题: [已解决]如何将选项组按钮的查询条件写入到创建查询中导出EXCEL?
本帖最后由 liuqi67 于 2017-1-3 10:36 编辑

[attach]60089[/attach]


要求:依选项组按钮的查询条件导出对应子窗体上的查询内容到excel。


做了一个选项组按钮查询子窗体,需要按选项按钮执行的查询条件导出对应子窗体上的内容,菜鸟级水平,想了好些办法没搞定,导出的总是全部内容,无法实现按筛选的内容导出。

如下示例为选项组三个按钮的查询语句:
Private Sub Option23_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
Me.产品分类统计_子窗体.Form.RecordSource = "select * from 产品分类统计查询 "
End Sub
Private Sub Option25_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
Me.产品分类统计_子窗体.Form.RecordSource = "select * from 产品分类统计查询 where nz(Round([已提供]/[物料总数]*100,2),0)=100"
End Sub
Private Sub Option27_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
Me.产品分类统计_子窗体.Form.RecordSource = "select * from 产品分类统计查询 where nz(Round([已提供]/[物料总数]*100,2),0)<100"
End Sub


如下示例为刘小军老师的导出代码,怎么将上面的变量写入到创建的查询中然后导出EXCEL?望高手指教,感谢!
Private Sub 导出_Click()
On Error GoTo Err_cmd导出_Click
    Dim qdf As DAO.QueryDef 'qdf被定义为一个查询定义对象
    Dim strWhere, strSQL As String
    strWhere = 产品分类统计_子窗体.Form.Filter
    If strWhere = "" Then
'没有条件
        strSQL = "SELECT * FROM [产品分类统计查询]"
    Else
'有条件
        strSQL = "SELECT * FROM [产品分类统计查询] WHERE " & strWhere
    End If
    Set qdf = CurrentDb.QueryDefs("产品分类统计导出")
    qdf.SQL = strSQL
    qdf.Close
    Set qdf = Nothing
    DoCmd.OutputTo acOutputQuery, "产品分类统计导出", "Excel97-Excel2003Workbook(*.xls)", , True
Exit_cmd导出_Click:
  Exit Sub
Err_cmd导出_Click:
  MsgBox Err.Description, , "确定要取消保存吗?"
  Resume Exit_cmd导出_Click
  
End Sub


作者: liuqi67    时间: 2016-10-14 09:42
望roych 老师能给予指点
作者: access新新新手    时间: 2016-10-14 09:51
本帖最后由 access新新新手 于 2016-10-14 09:56 编辑
liuqi67 发表于 2016-10-14 09:42
望roych 老师能给予指点

先获取窗体有多少条数据,然后一条一条写入excel里面
    Set rst = Me.子窗体.Form.Recordset




作者: Henry D. Sy    时间: 2016-10-14 12:02
例子呢?
作者: Henry D. Sy    时间: 2016-10-14 12:11
这样子,strWhere 永远=""
作者: Henry D. Sy    时间: 2016-10-14 12:30
把变量strSQL,strWhere以及相关的语句去掉
直接使用
qdf.SQL =Me.产品分类统计_子窗体.Form.RecordSource
作者: liuqi67    时间: 2016-10-14 12:58
Henry D. Sy 发表于 2016-10-14 12:30
把变量strSQL,strWhere以及相关的语句去掉
直接使用
qdf.SQL =Me.产品分类统计_子窗体.Form.RecordSource ...

非常感谢Henry D.Sy版主回复,我已上传例子,帮忙改一下例子
作者: Henry D. Sy    时间: 2016-10-14 13:32
liuqi67 发表于 2016-10-14 12:58
非常感谢Henry D.Sy版主回复,我已上传例子,帮忙改一下例子

1.随便做个查询,况且称之为A
2.按钮代码
  1. Private Sub Command3_Click()
  2.     Dim qdf As DAO.QueryDef
  3.     Set qdf = CurrentDb.QueryDefs("A")
  4.     qdf.SQL = Me.最终查询_子窗体.Form.RecordSource
  5.     DoCmd.OutputTo acOutputQuery, "A", , , True
  6. End Sub
复制代码
[attach]60090[/attach]




作者: liuqi67    时间: 2016-10-14 13:40
Henry D. Sy 发表于 2016-10-14 13:32
1.随便做个查询,况且称之为A
2.按钮代码

已OK!非常感谢Henry D. Sy 版主为我解决问题。




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