日期:2014-05-20  浏览次数:21169 次

一张A4纸打印两张会计凭证水晶报表如何设计
目前正在做会计凭证的录入,现在碰到一个打印的问题.

要求:目前一般的会计凭证半张A4纸就够了,因此会计经常会在一张A4张上打印两张凭证.当然也有可能一张A4纸不够,可能要几页才能打印完.但为了将凭证便于存档.目前会计是这样要求的:每张会计凭证打印15条记录,不足部份补空行.一张A4纸打印两张凭证.当然有时候会连续打印预若干张凭证.

现在我将会计凭证的数据源写成了一个存储过程.一次可以处理多张凭证,并且在存储过程里面已经补空行.

问题:水晶报表如何将一张A4纸按上面的要求设计,就好像两个半张A4纸一样.

存储过程如下:
/*
PROC:SELECT_Voucher
USER:選擇傳票
PARA:@Fvoucherid   (傳票內碼)
CREATE   BY   :MARK
CREATE   DATE:2007/4/26
EXAM:SELECT_Voucher   '10,11,12 '
*/

ALTER   PROC   select_voucher(
                    @Fvoucherid   NVARCHAR(4000))
AS
    DECLARE
        @COUNT               INT,   --共有多少行  
        @AddRec             INT,   --需追加的空白行數  
        @AddSN               INT,   --追加行的序號  
        @fbrno   NVARCHAR(200),   --公司名
        @fdate   DATETIME,   --日期
        @fyear   INT,             --年度
        @fperiod   INT,         --期別
        @fgroupid   NVARCHAR(10)   ,--傳票字
        @fnumber   INT,                       --傳票號
        @fnumber2   NVARCHAR(50),   --傳票字號
        @fattachments   INT,             --附件張數
        @FPosted           NVARCHAR(50),
        @FPreparerID   NVARCHAR(50),
        @FCheckerID     NVARCHAR(50),
        @FPosterID       NVARCHAR(50),
        @FCashierID     NVARCHAR(50),
        @FHandler         NVARCHAR(50),
        @FvoucherID2   NVARCHAR(50),
        @id                     INT,
        @Row                   INT,   --每張傳票列印的行數  
        @RecCount         INT   --行數

    SET   @Row   =   15

    --將傳票內碼分離出來
    CREATE   TABLE   #temp   (
        fvoucherid   INT)

    IF   @Fvoucherid   <>   ' '
        BEGIN
            IF   ltrim(rtrim(@Fvoucherid))   <>   ' '
                BEGIN  
                    --如果只有一張傳票  
                    IF   len(@Fvoucherid)   >   0
                          AND   charindex( ', ',@Fvoucherid)   =   0
                        INSERT   INTO   #temp(fvoucherid)
                        VALUES           (Convert(INT,@Fvoucherid))