设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

12下一页
返回列表 发新帖
查看: 9320|回复: 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 14:23:14 | 显示全部楼层
本帖最后由 yzc2011 于 2017-3-23 14:27 编辑

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

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

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

本帖子中包含更多资源

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

x
4#
 楼主| 发表于 2017-3-23 22:47:29 | 显示全部楼层
没有弄错呀,在没有输入查询条件时点击查询就会出现这样的情况。
5#
 楼主| 发表于 2017-3-24 00:27:57 | 显示全部楼层
本帖最后由 yzc2011 于 2017-3-24 00:49 编辑

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

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

本帖子中包含更多资源

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

x
6#
 楼主| 发表于 2017-3-24 11:37:08 | 显示全部楼层
在输入查询条件时是正常,在没有输入查询条件时,点击查询按键就会出现WHERE子句语法错误,接着再点击打印按键就会出现运行时错误“3145”。

能分开来写个代码吗,原来的订单查询和订单打印就用原来的代码,不变化。
                     
                                 空值查询和空值打印另外做一套代码。这样互不干扰。
7#
 楼主| 发表于 2017-3-24 13:05:54 | 显示全部楼层
有输入查询条件是正常,清空条件就出错

本帖子中包含更多资源

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

x
8#
 楼主| 发表于 2017-3-24 14:01:18 | 显示全部楼层
刚刚把以前所下载的全部删除了,重新从4楼下载了附件,打开直接点击查询按键,出现上面所说的错误。
9#
 楼主| 发表于 2017-3-24 14:04:28 | 显示全部楼层
本帖最后由 yzc2011 于 2017-3-24 14:07 编辑

我看了你的演示,你打开后什么都不动,直接点击“查询”按键,就会出错。一旦”查询“按键出错后,你再点击打印按键就跟着出错。

在点击清除后,不输入任何查询内容,直接点击查询按键,也会出现错误。
10#
 楼主| 发表于 2017-3-24 14:53:00 | 显示全部楼层
谢谢你,我先试一下,应该是没问题了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-5-20 20:51 , Processed in 0.110572 second(s), 34 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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