我以前做到这种动态报表也是头疼的很。后来也想到过修改报表文件。但发现比较麻烦。而且它不能被连编。一连编就不能被修改了。不怎么正规。所以我有一个思路。通过cursor或者数组转换。通过在报表外进行控制。也就是从数据源上进行控制。
  举个例子。01,03,05
   create cursor  print(year1 c(4),year2 c(4),……)
   select 01 as year1,03 as year2,05  as year3 from tablename into  table my_temp
   select print
   appe from my_array &&要不要加array,忘了  在报表的域控件第一个为print.year1,第二个为print.year2.
当你选择02,04,06,则在print中就是02,04,06,打印出来的就是02,04,06。 你可以规定最多能选择几列。否则把这张表全选上怎么办。然后你根据这个最大列确定create cursor print中的字段列数。并且把每个域控件的打印条件设置空白则不打印。这样的话,报表最大设了5列。结果用户只选了4列。则那一列就不会打印了。
  当然为了好看一些。有时用户只选择了两列。那两列躲在左边的角落。看起来总不大好。你可以在用户选择的时候,select "" as year1,01 as year2……  试试

解决方案 »

  1.   

    create cursor中的列数为你想要规定用户选择打印的最大列数
      

  2.   

    zhudexiang(阿祥) 
    liujianjun_(流星尔) 
    还有一个问题,怎么在表中找需要的字段,比如,我不知道有几个年,也不知道具体的年数,就象上面的,我不知道是否有年00,也不知道已经有了年00,年01,年02,如何才可以知道现在我已经有了几个年了,而且知道我有了那些年,谢谢~然后我才可以用你们的方法来写我的第一个问题,~~~~~~~~~~
    特别感谢zhudexiang(阿祥) ,上次我的一个问题::如何在vf的表单中加一个用于显示的表~~~~~~~~~~~~~~~~~~~~~~那个表的字段是动态的~~~
    也是你帮忙想办法的~~~:)
      

  3.   

    上面的代码写错了改一下。
      create cursor  print(year1 c(4),year2 c(4),……)
      select 01 as year1,03 as year2,05  as year3 from tablename into  table my_temp
      select print
      appe from my_temp  
      

  4.   

    liujianjun_(流星尔) 
    我的表结构就是用的年00,年01。。来做的字段,哎,这次是为我爸爸单位写一个小的管理软件~~~我是学的计算机,没有学foxpro,直接学的vf,一点语法也不知道,在学校一直是用c语言,现在在自学vc,哎,其实你们的程序我都看不太懂,只是凭点c语言的基础在猜,呵呵~~~~
      

  5.   

    zhudexiang(阿祥) 
    如上面说的,我的vf基础不太好,你的那个程序我还是没有太懂,可以详细点吗??
    我现在的字段是动态生成的,有可能是年00,也有可能是年00,年01,是根据我那个临时生成的表来决定的,我要在报表中根据我的临时表来决定字段的个数和名称,内容,,可以做到吗,如果可以的话,请详细的告诉我,最好加点注释,谢谢~~~~~~~~~~~~
    再次感谢两位朋友~~~~~~~~
      

  6.   

    这个问题其实很简单。你可以用zhudexiang(阿祥的这个函数。也可以把表结构文件拷出来。然后在下拉列表中帮定表结构的field_name列。如果用阿祥的函数,就绑定数组。afield()函数第一个参数是存放该表所有字段名的数组名。第二个参数表示表的别名或工作区。也就是当前函数操作哪一个表。
      

  7.   

    liujianjun_(流星尔) 
    用zhudexiang(阿祥) 的afield() 函数,但是如何选择需要的字段呢?????????
      

  8.   

    你可以用一个列表框。这个列表框的rowsourcetype为数组。rowsource为afield函数中的数组名(第一个参数)。就可以在下拉列表中显示可选字段了。
      

  9.   

    liuri(璇玑) 
    上面两位说的我其实一直没有看懂(:))因为我是初学者,有没有直接用程序表示在一个报表里捆绑一个表的呢????那样就可以不用考虑那么多了,~~~~~
      

  10.   

    对不起,zhudexiang(阿祥) liujianjun_(流星尔)  现在我才有了分,现在加分