标题:根据数据环境选择报表页表头
只看楼主
qq156059757
Rank: 1
等 级:新手上路
帖 子:77
专家分:9
注 册:2010-5-15
结帖率:83.33%
已结贴  问题点数:20 回复次数:19 
根据数据环境选择报表页表头
唉……有遇到难题了
如下:
本公司有50个部门,打印工资的时候需要打印50份,给每个部门分配一个表(为了方便表的名称全用数字代替)
可是打印工资的时候需要把部门的名称打印出来 ,而不是数字名称。现有一个各部门名称的表,如何将页标头关联此表,例:打印第一个表的时候,页标头(不是标题)自动变更为部门名称。

还有一个问题:我设定打印纸的页边距后,每页除页标头外,纸允许打印24条记录,
              可是,如果最后一页正好能打印24条记录是,总结就打印不出来了

搜了半天也没找着答案,还请各位大侠拔刀啊
搜索更多相关主题的帖子: 表头 环境 数据 选择 
2010-05-18 16:18
hu9jj
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:红土地
等 级:贵宾
威 望:396
帖 子:11713
专家分:43267
注 册:2006-5-13
得分:0 
自定义一个函数,进入参数为部门编号,返回部门名称,然后在报表中调用这个函数。

活到老,学到老! http://www. E-mail:hu-jj@
2010-05-18 16:26
hu9jj
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:红土地
等 级:贵宾
威 望:396
帖 子:11713
专家分:43267
注 册:2006-5-13
得分:0 
第二个问题可以先判断一下,若记录数正好能被24整除,则人为添加一条符合打印条件的空记录。

活到老,学到老! http://www. E-mail:hu-jj@
2010-05-18 16:33
qq156059757
Rank: 1
等 级:新手上路
帖 子:77
专家分:9
注 册:2010-5-15
得分:0 
回复 3楼 hu9jj
谢谢hu9jj

这样应该可以解决问题
但是每次都需要从第一个单位逐一核查,太麻烦了
有没有简单一点的方法呢
 
还有您说的那个自定义函数,应该如何自定义呢,
这个东西不太会用,能不能指点一下需要从什么地方入手
谢谢
2010-05-18 17:00
qq156059757
Rank: 1
等 级:新手上路
帖 子:77
专家分:9
注 册:2010-5-15
得分:0 
回复 2楼 hu9jj
parameters bh &&bh=部门编号
clear
set talk off
set safe off
sele 1
use xtzk &&各单位名称库
inde on bh to bh
sele 2
wbh=1
DO WHILE wbh<51  &&运行后出现嵌套错误
IF wbh<10
  II=STR(wbh,1)
ELSE
  II=STR(wbh,2)
ENDIF
use gzz&wbh
set rela to bh into name
name=a->name
return name
2010-05-19 09:20
qq156059757
Rank: 1
等 级:新手上路
帖 子:77
专家分:9
注 册:2010-5-15
得分:0 
回复 2楼 hu9jj
上边的自定义函数 哪里有错误 还请明示
2010-05-19 09:21
wzxc
Rank: 9Rank: 9Rank: 9
来 自:齐鲁大地
等 级:贵宾
威 望:39
帖 子:985
专家分:1296
注 册:2006-4-25
得分:0 
DO WHILE wbh<51  &&运行后出现嵌套错误    开始循环,可在哪结束呢,enddo?所以嵌套错误
IF wbh<10
  II=STR(wbh,1)
ELSE
  II=STR(wbh,2)
ENDIF
use gzz&wbh
set rela to bh into name
name=a->name
return name

认真看书学习,弄通Fox主义。
2010-05-19 09:26
qjbzjp
Rank: 13Rank: 13Rank: 13Rank: 13
来 自:尧的故乡
等 级:贵宾
威 望:48
帖 子:1914
专家分:4397
注 册:2007-3-14
得分:0 
简单一点好,用一个部门名称表来存放编号和部门名称,做个自定义函数my_func返回部门名称:
FUNCTION my_func
PARAMETERS x
SELECT 部门名称表
LOCATE for x==ALLTRIM(编号)
IF FOUND()
    RETURN 部门名称
ELSE
    RETURN ""
ENDIF
SELECT 打印表
ENDFUNC
在需要打印的地方用my_func("编号")返回对应的部门名称。。

[ 本帖最后由 qjbzjp 于 2010-5-19 10:45 编辑 ]

相互学习,互相交流,共同提高。
2010-05-19 10:39
qq156059757
Rank: 1
等 级:新手上路
帖 子:77
专家分:9
注 册:2010-5-15
得分:0 
回复 8楼 qjbzjp
我制作的报表如下

其中域控件
的自定义函数如下
PARAMETERS x
SELECT 1
use xtzk.dbf && xtzk.dbf为部门名称表
LOCA for 'x'='bh' &&此处如果不带’‘的话,运行时老是出现函数参数的值,类型或数目无效
IF FOUND()
    RETURN name
ELSE
    RETURN ""
ENDIF
return

如果把此域控件去掉的话,打印程序可以顺利运行,只是打印出来的工资表没有部门!?
以下是打印程序,请看一下我调用自定义函数的方式是否正确(红色粗体)
parameters bh
clear
set talk off
set safe off
wbh=0
QYH=1
ZYH=99
SELE 1
USE XTZK   &&如果修改XTZK.DBF中 BH 的类型,程序将出错.
do while .t.
  clear
  @13,20 say '单位编号:' GET WBH PICT '99'
  READ
  
  IF WBH=99
    EXIT
  ENDIF

  SELE 1
  LOCATE FOR BH=WBH

  IF EOF()
    @18,20 SAY '该单位不存在!'
      ?CHR(7)+CHR(7)
    LOOP
  ENDIF

  IF WBH<10
    I=STR(WBH,1)
  ELSE
    I=STR(WBH,2)
  ENDIF
  WNAME=NAME
  @19,20 SAY '正在打印'+WNAME+'工资表'

  sele 2
*  ?my_func(wbh) &&自定义函数是这样调用吗?? 如果我把前面的‘*‘去掉的话 打印程序运行就出现问题了
  USE GZZ&I
  report form 报表1.frx preview
  *to printer
enddo
name=LTRIM(TRIM(WNAME))
return name
2010-05-19 15:07
qjbzjp
Rank: 13Rank: 13Rank: 13Rank: 13
来 自:尧的故乡
等 级:贵宾
威 望:48
帖 子:1914
专家分:4397
注 册:2007-3-14
得分:0 

只改这一句:LOCA for x=bh
在打印域控件中,直接用 my_func(wbh)。

8楼的函数用于bh是字符型的情况。

[ 本帖最后由 qjbzjp 于 2010-5-19 18:35 编辑 ]

相互学习,互相交流,共同提高。
2010-05-19 18:32



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-307134-1-1.html




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

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.042754 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved