Access交流中心

北京 | 上海 | 天津 | 重庆 | 广州 | 深圳 | 珠海 | 汕头 | 佛山 | 中山 | 东莞 | 南京 | 苏州 | 无锡 | 常州 | 南通 | 扬州 | 徐州 | 杭州 | 温州 | 宁波 | 台州 | 福州 | 厦门 | 泉州 | 龙岩 | 合肥 | 芜湖 | 成都 | 遂宁 | 长沙 | 株洲 | 湘潭 | 武汉 | 南昌 | 济南 | 青岛 | 烟台 | 潍坊 | 淄博 | 济宁 | 太原 | 郑州 | 石家庄 | 保定 | 唐山 | 西安 | 大连 | 沈阳 | 长春 | 昆明 | 兰州 | 哈尔滨 | 佳木斯 | 南宁 | 桂林 | 海口 | 贵阳 | 西宁 | 乌鲁木齐 | 包头 |

急急急,在批量打印中,如何做到,,,我设置有二张报表,,,一张为项目少于多少项打印报表1,为半张纸;否则为另一打印另一张报表,为一张纸。。。)自动判记录的项目数而套用各自的格式打印报表/?

54.℡80後2oO  发表于:2008-09-12 19:21:42  
复制

急急急,,,请问,,,在一个基于查询的子窗体的批量打印中,,,(我设置有二张报表,,,一张为项目少于多少项打印报表1,为半张纸;否则为另一打印另一张报表,为一张纸。。。)如何做到,,,自动判记录的项目数而套用各自的格式打印报表/?

 

Top
小ビビ2UのB8 发表于:2008-09-12 21:13:42

自己顶一下。。。



小ビビ2UのB8 发表于:2008-09-12 22:57:23

没人会吗/?

还是我没说明白/?



黎红军 发表于:2008-09-13 00:22:28

在打印报表的命令按钮的单击事件中,添加一个判断语句,判断的条件是子窗体符合条件的记录数,也即你说的项目数。然后相应用openreport打开不同的报表就可以了。

 

Private Sub Command0_Click()
On Error GoTo Err_Command0_Click

  if me.If Me.子窗体名.RecordsetClone.RecordCount <10 Then
    DoCmd.OpenReport "表1", acViewNormal

   ELSE

   DoCmd.OpenReport "表2", acViewNormal

Exit_Command0_Click:
    Exit Sub

Err_Command0_Click:
    MsgBox Err.Description
    Resume Exit_Command0_Click
   
End Sub



小ビビ2UのB8 发表于:2008-09-13 00:29:40

楼上的大哥。。。能帮忙看看吗?

就资料输入那个查询子窗体,,,我进行批量打印,,,设置有两个报表,,,具体看看就明白了,,,

拜托了。。。



小ビビ2UのB8 发表于:2008-09-13 00:32:41

我现在用的代码好像类似,,,但就是会出现问题,,,你、试一下就知道了,,,,

比如按批量打印预览吧,,,

好像它只进行一次判断,,,(好像即以第一条记录的格式打印所有的记录。。。并不能实现目的。。。)



小ビビ2UのB8 发表于:2008-09-13 00:33:53
黎红军 发表于:2008-09-13 10:29:07

看了你的数据库,做的很不错。

看了你的判断条件,没有问题。

右边的录入然后单张打印是没问题的,对吧。

问题在左边的批量打印。

我的建议有两个:

其一,在日期旁边增加一个勾选项的选择条件,即过滤是符合半张报表的记录还是满张的记录。然后一次点击,自动打印查询结果的记录报表。但这个方案打印出来的报表是按半张与满张各自的顺序打出来的,对于存档需要再整理。但半张的可打印两条记录,成满张的,符合节省的目的。

其二,在你的批量打印代码中再增加一段按记录循环的语句,即依据每个记录来判断选择所需的报表,然后自动全部打印出来。这样好像是每个记录一张纸,不能合并记录到一张纸上面。

不知是否能达到你的需求,

如果有其他的要求,欢迎交流!



黎红军 发表于:2008-09-13 10:34:17
在方法2中,还可以增加判断,然后让一次相连的两个半张的记录合并到1个半张报表中打印出来。这样也应当能节省部分的纸张。

黎红军 发表于:2008-09-13 10:38:51
在方法一中,可以把半张的与满张的分开放于一处存档,然后各自有各自的清单明细或者在总清单中标明是半张的还是满张的,这样查存档也应当没问题的,但这个是数据库外的话了。依据你们的实际,选择不同的方法吧。

小ビビ2UのB8 发表于:2008-09-13 11:06:04

版主大哥,,,能否帮忙改一下,,,我就是不会写这样的循环语句啊,,,,能帮忙写一下,,,修改一下,,,麻烦你了,,,,

 

能者多劳点嘛,,,



黎红军 发表于:2008-09-13 19:14:56

批量打印代码:

Private Sub 批量打印_Click()
'On Error Resume Next
Dim strSQL As String
Dim conn As ADODB.Connection
Dim rst As ADODB.Recordset
Dim strID As String
    Set conn = New ADODB.Connection
    Set rst = New ADODB.Recordset
    Set conn = CurrentProject.Connection
   
    strSQL = "SELECT 病人资料总表.打印标记, 病人资料总表.病人ID, 病人资料总表.病人编号, 病人资料总表.姓名, " & _
        "病人资料总表.性别 , 病人资料总表.年龄, 病人资料总表.科别, 病人资料总表.床号, 病人资料总表.送检日期,  " & _
        "病人资料总表.检验日期, 病人资料总表.送检医生, 病人资料总表.检验者, 病人资料总表.审核者, " & _
        "病人资料总表.标本类型 , 病人资料总表.备注, 病人资料总表.项目名称, 病人资料总表.结果一,  " & _
        "病人资料总表.结果二, 病人资料总表.结果三, 病人资料总表.结果四, 病人资料总表.结果五, " & _
        "病人资料总表.结果六 , 病人资料总表.结果七, 病人资料总表.结果八, 病人资料总表.结果九,  " & _
        "病人资料总表.结果十, 病人资料总表.结果十一, 病人资料总表.结果十二, 病人资料总表.结果十三,  " & _
        "病人资料总表.结果十四, 病人资料总表.结果十五, 病人资料总表.结果十六, 病人资料总表.结果十七,  " & _
        "病人资料总表.结果十八, 病人资料总表.结果十九, 病人资料总表.结果二十, 项目.项目一, 项目.项目二,  " & _
        "项目.项目三, 项目.项目四, 项目.项目五, 项目.项目六, 项目.项目七, 项目.项目八, 项目.项目九,  " & _
        "项目.项目十, 项目.项目十一, 项目.项目十二, 项目.项目十三, 项目.项目十四, 项目.项目十五, 项目.项目十六, " & _
        "项目.项目十七, 项目.项目十八 , 项目.项目十九, 项目.项目二十, 项目.单位一, 项目.单位二, 项目.单位三, " & _
        "项目.单位四, 项目.单位五, 项目.单位六, 项目.单位七, 项目.单位八, 项目.单位九, 项目.单位十, " & _
        "项目.单位十一, 项目.单位十二, 项目.单位十三, 项目.单位十四, 项目.单位十五, 项目.单位十六,  " & _
        "项目.单位十七, 项目.单位十八, 项目.单位十九, 项目.单位二十, 项目.参考范围一, 项目.参考范围二,  " & _
        "项目.参考范围三, 项目.参考范围四, 项目.参考范围五, 项目.参考范围六, 项目.参考范围七, 项目.参考范围八, " & _
        "项目.参考范围九, 项目.参考范围十, 项目.参考范围十一, 项目.参考范围十二, 项目.参考范围十三,  " & _
        "项目.参考范围十四, 项目.参考范围十五, 项目.参考范围十六, 项目.参考范围十七, 项目.参考范围十八,  " & _
        "项目.参考范围十九, 项目.参考范围二十 " & _
        "FROM 病人资料总表 INNER JOIN 项目 ON 病人资料总表.项目名称 = 项目.项目名称 " & _
        "WHERE (((病人资料总表.打印标记)=True));"

   
   rst.Open strSQL, conn, adOpenKeyset, adLockReadOnly, adCmdText
   rst.MoveFirst
    Do While Not rst.EOF
    'Debug.Print rst.RecordCount
   ' For I = 0 To rst.RecordCount Step 1
    strID = ""
    Debug.Print rst!病人ID, " '" & rst!项目十四 & " '"
        strID = rst!病人编号
        If IsNull(rst!项目十四) Then
       ' rst.MoveNext
        'strID = strID & "," & rst!病人编号
        Debug.Print "1=1"

     'If IsNull(DLookup("项目十四", "批量打印查询", "病人编号='" & Me!日期查询!病人编号 & "'")) Then
   
    DoCmd.OpenReport "批量打印1", acNormal, "批量打印查询", "病人编号 ='" & strID & "'", acWindowNormal
   
    Else
   
    DoCmd.OpenReport "批量打印2", acNormal, "批量打印查询", "病人编号 ='" & strID & "'", acWindowNormal
    End If
        rst.MoveNext
     Loop
     rst.Close
   Set rst = Nothing
   Set conn = Nothing
End Sub

 

合并记录的你就在琢磨琢磨吧



小ビビ2UのB8 发表于:2008-09-13 20:09:49

大哥,,,你就再帮我一把吧,,,,先谢谢你了,,,,

合并记录的代码肯定更深奥,,,,能者无所不能,,,多担待些好不/?



小ビビ2UのB8 发表于:2008-09-13 20:22:38

我用两条分别为本来分别打开报表1和2的记录试了一下,,,好像不行啊,,,大哥能直接在程序里修改调试一下吗/?

拜托了,,,,

合并记录也帮忙帮忙啊,,,,

 



小ビビ2UのB8 发表于:2008-09-14 12:36:02
达人们,,,,请伸伸你们的手,,,,救救吾,...

小ビビ2UのB8 发表于:2008-09-14 18:06:35

坛里会的高手们,,,,就教教我吧/?



总记录:15篇  页次:1/1 9 1 :