以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  专业报表"直接进行统计"中  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=47250)

--  作者:mamuaiqing
--  发布时间:2014/3/6 21:18:00
--  专业报表"直接进行统计"中
专业报表"直接进行统计"中代码如下:

Dim Names As List(Of String) = Tables("订单").DataTable.GetUniqueValues("","产品")
Dim
doc As New PrintDoc
Dim
rt As New prt.RenderTable
rt.Cells(
0,0).Text = "产品"
rt.Cells(
0,1).Text = "订购次数"
rt.Cells(
0,2).Text = "数量"
rt.Cells(
0,3).Text = "金额"
For
i As integer = 0 To Names.Count -1
    rt.Cells(i+
1,0).Text= Names(i)
    rt.Cells(i+
1,1).Text = Tables("订单").DataTable.Compute("Count(日期)","产品=\'" & Names(i) & "\'")
    rt.Cells(i+
1,2).Text = Tables("订单").DataTable.Compute("Sum(数量)","产品=\'" & Names(i) & "\'")
    rt.Cells(i+
1,3).Text = Tables("订单").DataTable.Compute("Sum(金额)","产品=\'" & Names(i) & "\'")
Next

rt.Style.Gridlines.All = New prt.Linedef(Color.Gray)
\'灰色网格线
rt.CellStyle.Spacing.All =
1 \'内容距离网格线1毫米
rt.Rows(
0).Style.TextAlignHorz = prt.AlignHorzEnum.Center \'第一行内容水平居中

doc.Body.Children.Add(rt)
doc.Preview()

如果学生想在 rt.Cells(i+1,4).Text 列出该产品"编号"的话代码要怎么改?


--  作者:有点酸
--  发布时间:2014/3/6 22:04:00
--  
Dim Names As List(Of String()) = Tables("订单").DataTable.GetUniqueValues("","编号|产品")
Dim doc As New PrintDoc
Dim rt As New prt.RenderTable
rt.Cells(0,0).Text = "产品"
rt.Cells(0,1).Text = "订购次数"
rt.Cells(0,2).Text = "数量"
rt.Cells(0,3).Text = "金额"
For i As integer = 0 To Names.Count -1
    rt.Cells(i+1,0).Text= Names(i)(1)
    rt.Cells(i+1,1).Text = Tables("订单").DataTable.Compute("Count(日期)","产品=\'" & Names(i)(1) & "\'")
    rt.Cells(i+1,2).Text = Tables("订单").DataTable.Compute("Sum(数量)","产品=\'" & Names(i)(1) & "\'")
    rt.Cells(i+1,3).Text = Tables("订单").DataTable.Compute("Sum(金额)","产品=\'" & Names(i)(1) & "\'")
    rt.Cells(i+1,3).Text = Names(i)(0)
Next
rt.Style.Gridlines.All = New prt.Linedef(Color.Gray) \'灰色网格线
rt.CellStyle.Spacing.All = 1 \'内容距离网格线1毫米
rt.Rows(0).Style.TextAlignHorz = prt.AlignHorzEnum.Center \'第一行内容水平居中
doc.Body.Children.Add(rt)
doc.Preview()

--  作者:mamuaiqing
--  发布时间:2014/3/6 22:12:00
--  

感谢有点酸老师,代码报错

学生很纠结如果将这行Dim Names As List(Of String()) = Tables("订单").DataTable.GetUniqueValues("","编号|产品")
改为"Dim Names As List(Of String()) = Tables("订单").DataTable.GetUniqueValues("","产品","编号")的话后续循环中的代码又得怎么改?学生的另个思路,呵呵


图片点击可在新窗口打开查看此主题相关图片如下:图1.png
图片点击可在新窗口打开查看

--  作者:有点酸
--  发布时间:2014/3/6 22:13:00
--  
Dim Names As List(Of String()) = Tables("订单").DataTable.GetValues("编号|产品")
[此贴子已经被作者于2014-3-6 22:13:36编辑过]

--  作者:mamuaiqing
--  发布时间:2014/3/6 22:26:00
--  
问题解决,感谢有点酸老师的帮助
--  作者:mamuaiqing
--  发布时间:2014/3/6 23:17:00
--  
再请教下老师,如果生成的报表按编号进行排序该怎么实现?
--  作者:Bin
--  发布时间:2014/3/7 8:25:00
--  
http://www.foxtable.com/help/topics/2747.htm
Dim Names As List(Of String()) = Tables("订单").DataTable.GetValues("编号|产品","编号")

--  作者:mamuaiqing
--  发布时间:2014/3/7 16:54:00
--  

再请教下老师,如果用Select的话能实现吗?


--  作者:Bin
--  发布时间:2014/3/7 17:01:00
--  
Select 把所有行选择出来你觉得有必要么?  当然也是可以的实现的.
--  作者:mamuaiqing
--  发布时间:2014/3/7 17:12:00
--  

呵呵,学生想学习下Select语句,请教下老师,上面代码的话用Select语句该如何实现