| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1302 人关注过本帖, 1 人收藏
标题:动态报表弄得头都大了
取消只看楼主 加入收藏
scilent
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
帖 子:285
专家分:1399
注 册:2011-8-9
结帖率:100%
收藏(1)
已结贴  问题点数:20 回复次数:4 
动态报表弄得头都大了
先上文件再说,一天偶然看了一篇文章,用程序动态控制,设计任意报表,文章没有看太懂,大致意思知道了,想操练一下试试,呵呵,怎么也预览不出来,老大们看看为什么啥也显不出来?
report.zip (5.39 KB)
程序代码:
you_bb="动态报表.frx"
USE dyjl
n_zdzs =afields(ss_text)   

USE &you_bb. IN 2 EXCLUSIVE
IF n_zdzs>0         &&判断是否有字段
   FOR jsk_i=1 TO n_zdzs  &&添加标题行
       APPEND BLANK
       REPLACE objtype WITH 5
       replace objcode WITH 0
       replace expr with ["]+ss_text[jsk_i,1]+["] &&输入带双引号的
       replace fontsize WITH 12     &&标题行用小四
       replace height WITH 2000
       replace width WITH 1562.5*4   &&一个四号字是1562.5
       replace vpos WITH 12266
       replace hpos WITH 2000*jsk_i 
       replace penred WITH -1,pengreen WITH -1 ,penblue WITH -1,fillred WITH -1,fillblue WITH -1,fillgreen WITH -1
       replace timestamp WITH VAL(SYS(3)), platform WITH  "windows",supalways WITH .T.,suprpcol WITH 3
       REPLACE supvalchng WITH .f.
       replace uniqueid WITH "ziduan"+ALLTRIM(STR(jsk_i))
    ENDFOR
    FOR jsk_j=1 TO n_zdzs  &&添加细节区
       APPEND BLANK
       REPLACE objtype WITH 8
       replace objcode WITH 0
       replace name WITH ss_text[jsk_j,1]
       replace expr with "dyjl."+ss_text[jsk_j,1]
       replace fontsize WITH 11     &&内容用五号字
       replace height WITH 2000
       replace width WITH 5000
       replace vpos WITH 12266+2000
       replace hpos WITH 2000*jsk_J*2000
       replace fillchar WITH "c"
       replace stretch WITH  .T.   &&溢出时伸展
       replace penred WITH -1,pengreen WITH -1 ,penblue WITH -1,fillred WITH -1,fillblue WITH -1,fillgreen WITH -1
       replace timestamp WITH VAL(SYS(3)), platform WITH  "windows",supalways WITH .T.,suprpcol WITH 3
       REPLACE supvalchng WITH .f.
       replace uniqueid WITH "bianliang"+ALLTRIM(STR(jsk_J))
     ENDFOR
   ENDIF
    Use
    SELE dyjl
  REPORT FORM &YOU_BB TO PRINT PROMPT PREVIEW   &&打印报表
  Use &YOU_BB..FRX   
中间的宽高是我随便设的,我看其他报表文件中的不知道都是什么单位,有说MM,有说CM。还有说是点。真是搞不懂呀
搜索更多相关主题的帖子: replace 文章 动态 
2013-08-09 16:29
scilent
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
帖 子:285
专家分:1399
注 册:2011-8-9
收藏
得分:0 
我也不求显示出来有多漂亮,但,为什么啥都显不出来

在没有路的地方走一条路,让别人有路可走
2013-08-09 17:07
scilent
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
帖 子:285
专家分:1399
注 册:2011-8-9
收藏
得分:0 
呵呵,想试试,如果这种方法可行的话,就可以随便选打印多少个字段的报表,这样报表就没有任何限制了。要不然对于未知字段个数的打印还是不行。我看过另一种方法,是用表缓冲加载字段,但还是做不到任意。

在没有路的地方走一条路,让别人有路可走
2013-08-09 18:03
scilent
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
帖 子:285
专家分:1399
注 册:2011-8-9
收藏
得分:0 
谢谢老大指教
我的目的,就是想创建一个空白报表,让它能通过编程添加数据,随便显示点什么
1这段代码是从别人的代码里拷了一段下,作了些修改,有些地方没有修改到。细节问题请老大见谅
2、   REPLACE objtype WITH 8
       replace objcode WITH 0
       replace name WITH ss_text[jsk_j,1]
       replace expr with "dyjl."+ss_text[jsk_j,1]
    这个不是引用表中的数据吗?
3.数据环境用的表,在程序中是临时生成,字段个数是不固定的,所以报表要用空白,根据选择来添加。
————————————————————————
把数据表和控件在报表设计器里添加,预览时可以出现,
但是通过程序写入,预览时不会显示
我就是为这个迷糊

这是我后来又修改的,只不是从报表设计器里添加,还是不行
程序代码:
you_bb="动态报表.frx"
USE dyjl
n_zdzs =afields(ss_text)   

USE &you_bb IN 2 EXCLUSIVE
SELECT 2

IF n_zdzs>0         &&判断是否有字段
          append  BLANK
     replace platform WITH "windows",objtype WITH 26,name with 'cursor', expr WITH "alias="+["]+"dyjl"+["]+CHR(13)+"cursorsource=dyjl.dbf"+CHR(13)+"name="+["]+"cursor1"+["]  

*即使把表添加到数据环境里也不行!
*为了使表的格式与报表设计器生成的记录格式一样
    GO 4
    FOR jsk_i=1 TO n_zdzs  &&添加标题行
  
      INSERT  BLANK
       REPLACE objtype WITH 5
       replace objcode WITH 0
       replace expr with ["]+ss_text[jsk_i,1]+["] &&输入带双引号的
       replace fontsize WITH 12     &&标题行用小四
       replace fontface WITH "宋体"
       replace height WITH 2000
       replace width WITH 1562.5*4   &&一个四号字是1562.5
       replace vpos WITH 12266
       replace hpos WITH 2000*jsk_i 
       replace mode WITH 1
       replace penred WITH -1,pengreen WITH -1 ,penblue WITH -1,fillred WITH -1,fillblue WITH -1,fillgreen WITH -1
       replace timestamp WITH VAL(SYS(3)), platform WITH  "windows",supalways WITH .T.,suprpcol WITH 3
       REPLACE supvalchng WITH .f.
       replace uniqueid WITH "ziduan"+ALLTRIM(STR(jsk_i))
     &&添加细节区
       insert BLANK
       REPLACE objtype WITH 8
       replace objcode WITH 0
       replace name WITH ss_text[jsk_i,1]
       replace expr with "dyjl."+ss_text[jsk_i,1]
       replace fontsize WITH 11     &&内容用五号字
       replace fontface WITH "宋体"
       replace mode WITH 1
       replace height WITH 2000
       replace width WITH 5000
       replace vpos WITH 12266+2000
       replace hpos WITH 2000*jsk_i*2000
       replace fillchar WITH "C"
       replace stretch WITH  .T.   &&溢出时伸展
       replace penred WITH -1,pengreen WITH -1 ,penblue WITH -1,fillred WITH -1,fillblue WITH -1,fillgreen WITH -1
       replace timestamp WITH VAL(SYS(3)), platform WITH  "windows",supalways WITH .T.,suprpcol WITH 3
       REPLACE supvalchng WITH .f.
       replace uniqueid WITH "bianliang"+ALLTRIM(STR(jsk_i))
     ENDFOR
    REPLACE unique WITH "" all
    replace environ WITH "" FOR objtype=9 AND (objcode=4 OR objcode=7)
   ENDIF
    Use
    SELECT  dyjl
  REPORT FORM &YOU_BB  PREVIEW 



[ 本帖最后由 scilent 于 2013-8-11 11:03 编辑 ]

在没有路的地方走一条路,让别人有路可走
2013-08-11 10:56
scilent
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
帖 子:285
专家分:1399
注 册:2011-8-9
收藏
得分:0 
很久没有弄过vfp,假期里,一次偶然看了 一篇动态报表的文章,文章也顾上仔细看,试了试不成功,越急越是不行。得到老师的热心帮助和指点。真是让人感动!

特别是熬到夜里,可惜不能再给你加点分

[ 本帖最后由 scilent 于 2013-8-12 01:55 编辑 ]

在没有路的地方走一条路,让别人有路可走
2013-08-12 01:46
快速回复:动态报表弄得头都大了
数据加载中...
 
   



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

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