我以前做到这种动态报表也是头疼的很。后来也想到过修改报表文件。但发现比较麻烦。而且它不能被连编。一连编就不能被修改了。不怎么正规。所以我有一个思路。通过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…… 试试
举个例子。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…… 试试
liujianjun_(流星尔)
还有一个问题,怎么在表中找需要的字段,比如,我不知道有几个年,也不知道具体的年数,就象上面的,我不知道是否有年00,也不知道已经有了年00,年01,年02,如何才可以知道现在我已经有了几个年了,而且知道我有了那些年,谢谢~然后我才可以用你们的方法来写我的第一个问题,~~~~~~~~~~
特别感谢zhudexiang(阿祥) ,上次我的一个问题::如何在vf的表单中加一个用于显示的表~~~~~~~~~~~~~~~~~~~~~~那个表的字段是动态的~~~
也是你帮忙想办法的~~~:)
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
我的表结构就是用的年00,年01。。来做的字段,哎,这次是为我爸爸单位写一个小的管理软件~~~我是学的计算机,没有学foxpro,直接学的vf,一点语法也不知道,在学校一直是用c语言,现在在自学vc,哎,其实你们的程序我都看不太懂,只是凭点c语言的基础在猜,呵呵~~~~
如上面说的,我的vf基础不太好,你的那个程序我还是没有太懂,可以详细点吗??
我现在的字段是动态生成的,有可能是年00,也有可能是年00,年01,是根据我那个临时生成的表来决定的,我要在报表中根据我的临时表来决定字段的个数和名称,内容,,可以做到吗,如果可以的话,请详细的告诉我,最好加点注释,谢谢~~~~~~~~~~~~
再次感谢两位朋友~~~~~~~~
用zhudexiang(阿祥) 的afield() 函数,但是如何选择需要的字段呢?????????
上面两位说的我其实一直没有看懂(:))因为我是初学者,有没有直接用程序表示在一个报表里捆绑一个表的呢????那样就可以不用考虑那么多了,~~~~~