纸型为每单元179mm*93mm的连续纸,每单元,为一个明细,打印一个人的工资,工资共有应发部分14项,分两行显示,应扣部分10项,分两行显示,合计部分六项,分一行。每行均为8项。
要求应发部分,应扣部分,合计部分的项,均可选择是否打印,例如应发部分的第二项不打印,则第三项应该紧挨着第一项。
用何种方法和工具能够实现?
方法一:水晶报表,如何动态创建字段?
方法二:printer.print ""
........
或者大家还有什么更好的方法?
给点思路!

解决方案 »

  1.   

    天呀! 大家帮忙顶顶吧,顶也有分。分数不够我再开。
    绿豆大侠,MSTOP,暴风雨,莫伊姐姐,还有各位,星星,角角,你们都在哪呀!
      

  2.   

    我用的是printer.print,基本可以完成。 
    但是,超过一页,就不能控制精确走纸了!
      

  3.   

    我现在也在做打印报表,我用的是activereport,我的报表也比较复杂,基本可以实现。字段的动态创建可以用SQL语句完成。
      

  4.   

    printer.papersize是和打印机相关的,如果打印机没有自定义纸型
    也就是,printer.papersize=256,就无法执行过去。它默认的纸型为A4,一张A4纸,只能打印,两个单元,然后走纸一大段。从第二页开始,打第三个单元。
    怎样不让打印机,走过那一大段纸呢?To: wxfczg(筱芳) 我没用过activereport,有空我试一下,谢谢!
      

  5.   

    好像不是很复杂哦.
    用过vsflexgrid和vsview没有?在grid里面显示你的数据,不想打的列把colwidth设成0或者隐藏都可以的,然后再传给vsview打印。
    arp也是可以的,根据需要动态做表
      

  6.   

    to axer:请问arp怎么动态作表呀,好象里面的东西都不能动态生成,比如表格,label等都不能在程序里添加的呀?
      

  7.   

    一般来讲,你的报表格式并不是每次都频繁变动,而是有多个字段不同的种类,我的思路是每一种格式存成rpx格式(arp的自定义文档,xml格式),记录这种格式里面的字段\label的名称\字体等,打印时根据不同需求用loadlayout选择相应的rpx文件即可.内容的填充你可以看一下它的帮助手册,一般在before print,details里面设置
      

  8.   

    已经发过了,就再发一次吧。
    给你几个我写的函数,比较实用:
    Sub InitPrint()              '这个函数用来初试化打印机,请最先调用
    Printer.Orientation = 2       '设置为横向打印,改为1就是纵向了
    Printer.ScaleMode = 6                '设定单位为毫米
    Printer.ScaleLeft = 30        '设置左边界
    Printer.ScaleTop = 30                '设置上边界
    Printer.ScaleHeight = 300       '设置高度
    Printer.ScaleWidth = 200       '设置宽度
    End SubSub PrintStr(ByVal X As Long, ByVal Y As Long, ByVal Fntsize As Integer, ByVal Str As String)      '这个函数用来在指定位置用指定的字体大小打印指定的字符串
    Printer.CurrentX = X      '指定X坐标
    Printer.CurrentY = Y      '指定Y坐标
    Printer.FontSize = Fntsize  '指定字体大小
    Printer.Print Str         '打印字符串
    End SubPrinter.Line (X1, Y1)-(X2, Y2) '这个是Printer对象自带的方法,可以打印一条线Printer.PaintPicture '这也是Printer对象自带的方法,可以在指定位置打印图片
    PaintPicture这个方法的参数可以参考一下MSDN,比较多,我这里就不说了。当你调用这些函数和方法之后,最后还需要用:
    Printer.EndDoc 这个方法来将你的最终结果打印到纸上,如果不用这个语句,你的打印机是不会打印的。应该说只要你的程序使用这些函数,就可以将任何你想打印的东西打印出来了。
      

  9.   

    看一看个会对你有帮助的。
    http://www.moon-soft.com/book/vbzgridkjddyff.htm
      

  10.   

    http://www.epson.com.cn/tech_support/faq/dot/lq1600ki/lq1600ki.asp?lq1600ki=11这样设置打印机纸型,就可以了!
      

  11.   

    问题总算解决了。我用的是printer.print,纸型设置采取上一层我说的纸型设置。现在终于可以结贴给分了。多谢各位支持!^_^