|
如何把空值查询的结果传到报表中打印。同时不影响原打印功能。
就是说一个报表即能打印查询结果,也能就打印空值查询结果。只依据所显示的查询结果打印。
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
|