| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 5577 人关注过本帖, 1 人收藏
标题:动态打印工资清单
取消只看楼主 加入收藏
wxdhz
Rank: 1
等 级:新手上路
帖 子:62
专家分:0
注 册:2009-12-31
收藏
得分:0 
lnRow = 1 + (lnRecIndex - 1) * lnMaxRows  这一句是什么意思?“*”代表什么?
2013-08-26 14:45
wxdhz
Rank: 1
等 级:新手上路
帖 子:62
专家分:0
注 册:2009-12-31
收藏
得分:0 
以下是引用TonyDeng在2013-8-26 19:58:43的发言:

跟踪了一下,有两个,一是你字段太多每行超过了256个字符,二是“其他”字段有点古怪。前者好办,后面那个似乎见鬼了,得再检查一下。我今天上夜班,现在没时间了,明天回来详细跟踪一下吧。
“其他”字段可能是没有具体的值与它对应,因为是测试用,还没有确定字段名,可以先随便设一个。版主真是个有耐心、有水平的热心人,赞一个。
2013-08-27 07:59
wxdhz
Rank: 1
等 级:新手上路
帖 子:62
专家分:0
注 册:2009-12-31
收藏
得分:0 
TonyDeng版主,有希望调整吗?
2013-08-28 14:32
wxdhz
Rank: 1
等 级:新手上路
帖 子:62
专家分:0
注 册:2009-12-31
收藏
得分:0 
嗯,调程序是挺麻烦的,我不催你。谢谢!
2013-08-28 15:12
wxdhz
Rank: 1
等 级:新手上路
帖 子:62
专家分:0
注 册:2009-12-31
收藏
得分:0 
非常感谢TonyDeng的热忱帮助,好人一生平安幸福!也谢谢给予提示的其他版主、网友。
2013-08-29 15:19
wxdhz
Rank: 1
等 级:新手上路
帖 子:62
专家分:0
注 册:2009-12-31
收藏
得分:0 
调了个别还有空行出现。看了你昨天的提醒,我现在想用你第一次给设计的按行生成个性工资单,我修改了一下,按列生成。但有个问题,excel2000只有256列,而工资人数最少300人,这样一张工作表就生成不了,出现错误,现在想程序能不能判断超出256列,就生成到第二张工作表,或者用“转置”的方法。老师有什么更好的办法?
CLEAR ALL
CLEAR
Main()
CLEAR ALL
RETURN

PROCEDURE Main()
    LOCAL loFileName, loExcel, lnRow, lnCol, lnIndex, lcField
   
    IF !USED("工资")
        USE prn_gz ALIAS 工资 IN 0
    ENDIF
   
    loFileName = Application.DefaultFilePath + "\工资清单\工资单s"
    IF FILE(loFileName + ".xls")
        loFileName = loFileName + ".xls"
        DELETE FILE (loFileName)
    ELSE
        IF FILE(loFileName + ".xlsx")
            loFileName = loFileName + ".xlsx"
            DELETE FILE (loFileName)
        ENDIF
    ENDIF
   
    ? "正在启动 Microsoft Excel Application,请稍候……"
    loExcel = CREATEOBJECT("Excel.Application")
     ? "正在生成工资条,请稍候……"
    WITH loExcel
        .SheetsInNewWorkbook = 1
        .Workbooks.Add
        .WorkSheets(1).Activate
        lnRow = 0
        lnCol = -2
        SELECT 工资
        SCAN ALL
             lnRow = 1
             lnCol = lnCol+3
            FOR lnIndex = 1 TO FCOUNT()   && 循环次数等于字段的数目
                lcField = FIELD(lnIndex)
                IF !EMPTY(EVALUATE(lcField))
                    .ActiveSheet.Columns(lnCol).HorizontalAlignment = 2   &&水平靠左对齐
                    .ActiveSheet.Columns(lnCol).VerticalAlignment =2      &&垂直居中对齐
                    .Cells(lnRow, lnCol).Value = lcField
                    .Cells(lnRow , lnCol+1).Value = TRANSFORM(EVALUATE(lcField))
                   lnRow =lnRow +1
                ENDIF
            NEXT
        ENDSCAN
        .ActiveSheet.Range("A:IV").Font.Name="宋体"
        .ActiveSheet.Range("A:IV").Font.Size=10
        .ActiveSheet.COLUMNS("A:IV").ENTIRECOLUMN.AUTOFIT                        
        .ActiveWorkbook.SaveAs(loFileName)
        .Quit
    ENDWITH
    RELEASE loExcel
   ? "工资清单已生成"
   
ENDPROC
2013-08-30 14:09
wxdhz
Rank: 1
等 级:新手上路
帖 子:62
专家分:0
注 册:2009-12-31
收藏
得分:0 
回复 83楼 sdta
我是按列纵向生成的
2013-08-30 15:50
wxdhz
Rank: 1
等 级:新手上路
帖 子:62
专家分:0
注 册:2009-12-31
收藏
得分:0 
以下是引用sdta在2013-8-30 15:51:21的发言:

一个人的工资条有256列吗
工资单test.xls.zip (69.5 KB)

下载后把zip去掉
2013-08-30 15:54
wxdhz
Rank: 1
等 级:新手上路
帖 子:62
专家分:0
注 册:2009-12-31
收藏
得分:0 
不会贴图。就是工资项目按行排列,人员按列排列
2013-09-02 08:45
快速回复:动态打印工资清单
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.022600 second(s), 9 queries.
Copyright©2004-2025, BC-CN.NET, All Rights Reserved