【Access如何对交叉查询产生报表】分享给互联网技能从业者学习和参考。
ACCESS提供一个交叉查询的功能,为用户提供许多方便,它也可以直接打印。
但如果你需要使用这个交叉查询来制作一个报表,由于交叉查询产生的列是不定的,且根据数据而变,所以制作报表存在一些问题,请大家就这个问题进行讨论,提出一个比较好的解决方案。
以后每周均会以这种形式对ACCESS的一些难题进行讨论。
表现优秀者将由版主或站长予以各种形式的嘉奖!!!
ganrong
加够多的控件,然后用不到的隐藏起来
不知这种方法是否可行
cnwang
先加控件再隐藏,或动态创建控件应该都可以。
用交叉查询做报表源,其最大难点应该在于字段名的不固定,下面这句可以帮点忙啦:
CurrentDb.QueryDefs("交叉查询1").Fields(2).Name
老大这个点子非常不错!!!!!!!
tmtony
cnwang兄,我现在采取的办法是也是创建足够多的控件。
但我根据查询表或窗体(一般是子窗体)的列(动态列)来动态显示和重新定位报表中的列,使整个报表永远比较美观,但在处理上始终不是十分方便。
所以想知道高手在这方面的经验。
yuab
我做了个例子可解决以上问题。最关键是不会影响速度。
文件下载
tmtony
很不错,看来大家的思路都是一样的
我的程序基本上与你的是类似的。
我过几天整理一下也放上来
不过,想知道还有没有其它办法
tmtony
上传了我的例子,由于有客户的数据,所以只放上报表和程序,无法取具体数据,大家看看程序即要明白。
根据产生的查询窗体的列的多少自动设置报表显示的列及重新排列各列的位置。
自动根据数据窗体栏目宽度的变化而自动改变报表各列的宽度的功能还正在完善(即所见即所得)文件下载
xushengqi
斑竹,我有急用,请指导我,谢谢!
就是:交叉表按您们的方法在报表中横的可以总计,那么竖的总计如何设计,万分感谢!
tmtony
我的程序里面有啊,
lblTotal.Left = 30
lblTotal.Width = Width1
txttotalwaste_qty.ControlSource = "totalwaste_qty"
txtttotalwaste_qty.ControlSource = "=sum(totalwaste_qty)"
If Me.Width < ttlwidth + txttotalwaste_qty.Width Then
Me.Width = Me.Width + txttotalwaste_qty.Width
End If
lbltotalwaste_qty.Left = ttlwidth
txttotalwaste_qty.Left = ttlwidth
txtttotalwaste_qty.Left = ttlwidth
lbltotalwaste_qty.Visible = True
txttotalwaste_qty.Visible = True
txtttotalwaste_qty.Visible = True
ttlwidth = ttlwidth + txttotalwaste_qty.Width
不过,这种合计需要你选择某些字段进行合计,如果你想所有数字字段都进行合计,则还要进行一次判断,即如果此列被显示且是数字字段,则在报表页脚上相应位置加上相应合计: