设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

1234下一页
返回列表 发新帖
查看: 8830|回复: 32
打印 上一主题 下一主题

[窗体] 如何把空值查询的结果传到报表中打印。同时不影响原打印功能。

[复制链接]
跳转到指定楼层
1#
发表于 2017-3-23 13:17:06 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
如何把空值查询的结果传到报表中打印。同时不影响原打印功能。
就是说一个报表即能打印查询结果,也能就打印空值查询结果。只依据所显示的查询结果打印。

Private Sub cmd查询_Click()
    On Error GoTo Err_cmd查询_Click
    Dim strWhere As String  '定义条件字符串
    strWhere = ""    '设定初始值-空字符串

    '判断【产品名称】条件是否有输入的值
    If Not IsNull(Me.产品名称) Then
        '有输入
        strWhere = strWhere & "([产品名称] like '*" & Me.产品名称 & "*') AND "
    End If
   
     '判断【订单编号】条件是否有输入的值
    If Not IsNull(Me.订单编号) Then
        '有输入
        strWhere = strWhere & "([订单编号] like '*" & Me.订单编号 & "*') AND "
    End If
   
   '判断【准时】条件是否有输入的值
    If Not IsNull(Me.准时) Then
        '有输入
        strWhere = strWhere & "([准时] like '" & Me.准时 & "') AND "
    End If
   
     '判断【交货日期】条件是否有输入的值,由于有【启始交货日期】【截止交货日期】两个文本框
    '所以要分开来考虑
    If Not IsNull(Me.启始交货日期) Then
        '【启动交货日期】有输入
        strWhere = strWhere & "([交货日期] >= #" & Format(Me.启始交货日期, "yyyy-mm-dd") & "#) AND "
    End If
    If Not IsNull(Me.截止交货日期) Then
        '【截止交货日期】有输入
        strWhere = strWhere & "([交货日期] <= #" & Format(Me.截止交货日期, "yyyy-mm-dd") & "#) AND "
    End If
    '如果输入了条件,那么strWhere的最后肯定有" AND ",这是我们不需要的,
    '要用LEFT函数截掉这5个字符。
    If Len(strWhere) > 0 Then
        '有输入条件
        strWhere = Left(strWhere, Len(strWhere) - 5)
    End If
    '先在立即窗口显示一下strWhere的值,代码调试完成后可以取消下一句
    Debug.Print strWhere
    '让子窗体应用窗体查询
    Me.订单查询详表.Form.Filter = strWhere
    Me.订单查询详表.Form.FilterOn = True
   
     If Len(strWhere) > 0 Then
     Dim str As String, str1 As String
     str = "准时='超期' AND " & strWhere
    str1 = "准时='按时' AND " & strWhere
      Me.订单查询详表!超期次数 = DCount("*", "订单查询", str)
      Me.订单查询详表!按时次数 = DCount("*", "订单查询", str1)
    End If
Exit_cmd查询_Click:
    Exit Sub
Err_cmd查询_Click:
    MsgBox Err.Description
    Resume Exit_cmd查询_Click
End Sub
Private Sub cmd清除_Click()
   
    '下面这些控件的值要清空

    Me.产品名称 = Null
    Me.订单编号 = Null
    Me.准时 = Null
    Me.启始交货日期 = Null
    Me.截止交货日期 = Null
    Me.订单查询详表.Form.Filter = ""
    Me.订单查询详表.Form.FilterOn = True
    Me.订单查询详表!超期次数 = DCount("*", "订单查询", "准时='超期'")
    Me.订单查询详表!按时次数 = DCount("*", "订单查询", "准时='按时'")
   
    Me.空值字段 = Null
    Me.订单查询详表.Form.RecordSource = "select * from 订单查询"
   
    Me.订单查询详表.Requery  '清空之后一样要重新查询
End Sub

Private Sub 空值查询_Click()
     Dim str As String
     Dim sSQL As String
       If Not IsNull(Me.空值字段) Then
           str = Me.空值字段
         Else
           MsgBox "请输入要查询的空值字段名称"
           Me.空值字段.SetFocus
         Exit Sub
       End If
          sSQL = "select * from 订单查询 where " & str & " is null"
          Me.订单查询详表.Form.RecordSource = sSQL
  
End Sub

Private Sub 订单查询预览打印_Click()
    On Error GoTo Err_订单查询预览打印_Click
    Dim stDocName, strWhere As String
    stDocName = "订单查询打印"
    strWhere = Me.订单查询详表.Form.Filter
    '在打开报表的同时把子窗体的筛选条件字符串也传递给报表,
    '这样地话报表也会显示和子窗体相同的记录。
    DoCmd.OpenReport stDocName, acPreview, , strWhere
   
   
Exit_订单查询预览打印_Click:
    Exit Sub
Err_订单查询预览打印_Click:
    MsgBox Err.Description
    Resume Exit_订单查询预览打印_Click
End Sub

本帖子中包含更多资源

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

x
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖 订阅订阅
2#
发表于 2017-3-23 13:30:14 | 只看该作者

本帖子中包含更多资源

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

x
3#
 楼主| 发表于 2017-3-23 14:23:14 | 只看该作者
本帖最后由 yzc2011 于 2017-3-23 14:27 编辑

还有一点问题,在不查询状态下没办法打印。另外在清除后再点打印还是留着上次的的打印内容,在清除后能跟着清除打印内容吗。
麻烦你了

!!或者新建一个空值打印的报表和按键,彻底把这两个查询分开来使用。这样互不干扰。

4#
发表于 2017-3-23 14:45:07 | 只看该作者
yzc2011 发表于 2017-3-23 14:23
还有一点问题,在不查询状态下没办法打印。另外在清除后再点打印还是留着上次的的打印内容,在清除后能跟着 ...


本帖子中包含更多资源

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

x
5#
 楼主| 发表于 2017-3-23 15:08:16 | 只看该作者
出现两个错误。
把两个查询和打印彻底分开吧,这样会不会更好一点。
互相不干扰,这样修改的地方也会少一点。在附件中复制了一个报表,和新建了一个空值打印按键。
麻烦你了。新手对代码太陌生了。

本帖子中包含更多资源

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

x
6#
发表于 2017-3-23 22:42:53 | 只看该作者
yzc2011 发表于 2017-3-23 15:08
出现两个错误。
把两个查询和打印彻底分开吧,这样会不会更好一点。
互相不干扰,这样修改的地方也会少一 ...

你是不是搞错附件了,
我测试正常呀
7#
 楼主| 发表于 2017-3-23 22:47:29 | 只看该作者
没有弄错呀,在没有输入查询条件时点击查询就会出现这样的情况。
8#
发表于 2017-3-24 00:23:20 | 只看该作者
yzc2011 发表于 2017-3-23 22:47
没有弄错呀,在没有输入查询条件时点击查询就会出现这样的情况。

这就奇怪了,
你是不是下载4楼的附件呀!
9#
 楼主| 发表于 2017-3-24 00:27:57 | 只看该作者
本帖最后由 yzc2011 于 2017-3-24 00:49 编辑

是呀,就是4楼的附件啊
就一个2楼的附件和一个4楼的附件。
没有其它附件了呀。

要么就分开来,订单查询和订单打印就要原来的代码,不变化。
                      空值查询和空值打印另外做一套代码。这样互不干扰。也可以省了很多地方的修改。麻烦你了。

本帖子中包含更多资源

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

x
10#
发表于 2017-3-24 09:59:24 | 只看该作者
我这里一切正常
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-4-28 12:54 , Processed in 0.085473 second(s), 34 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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