以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  (请教)这个报表的代码应怎么样写  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=1233)

--  作者:gdtgl
--  发布时间:2008/11/24 21:02:00
--  (请教)这个报表的代码应怎么样写
文件:
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目2.table


要达到的效果:

图片点击可在新窗口打开查看此主题相关图片如下:未命名.jpg
图片点击可在新窗口打开查看

--  作者:gdtgl
--  发布时间:2008/11/24 21:04:00
--  

看着帮助中的:
1,sql语句
2,分组
3,绑定

能力有限而写不出来了....

[此贴子已经被作者于2008-11-24 22:00:52编辑过]

--  作者:gdtgl
--  发布时间:2008/11/24 21:06:00
--  

--

[此贴子已经被作者于2008-11-25 12:49:03编辑过]

--  作者:gdtgl
--  发布时间:2008/11/24 21:23:00
--  

\'\'\'
dim barow as row = tables("表A").current
dim babianhao as string = barow("编号")
Dim Names As New List(Of String)
Dim suzhu() As String \'定义数组
Dim bfrows As List(Of Datarow)
bfrows = DataTables("表F").select("[编号] = \'"& babianhao &"\'")
for each bfrow as datarow in bfrows
  Names.Add(bfrow("项目"))
next
suzhu = Names.ToArray()
output.show(suzhu(0))

Dim doc As New PrintDoc
Dim rt As prt.RenderTable

With Tables("表A.表F")
rt = New prt.RenderTable
rt.Style.GridLines.All = prt.Linedef.Default \'网格线为默认类型
For n As integer = 0 To .Rows.Count - 1      
    rt.Cells(0,0).Text = "编号"
    rt.Cells(0,1).Text ="采样编号"   
    rt.Cells(0,2+n).Text = .rows(n)("项目")
next
End With
doc.Body.Children.Add(rt)

Dim cmd As New SQLCommand \'定义一个SQL命令
Dim dt As DataTable \'定义一个数据表变量
cmd.CommandText = "Select 编号,采样编号,值 from {表C} where 编号 = \'"& babianhao &"\' and 项目= \'"& suzhu(0) &"\' "
dt = cmd.ExecuteReader() \'生成一个临时表
dim Count As Integer = 0
rt = New prt.RenderTable
For Each Col AS DataCol In Dt.DataCols
    rt.Cells(0,Count).Text = Col.Name
    For r As integer = 0 To dt.DataRows.Count - 1
        rt.Cells(r +1,Count).Text = dt.DataRows(r)(Col.Name)
    Next
    Count = Count + 1
Next
doc.Body.Children.Add(rt)
doc.Preview()


图片点击可在新窗口打开查看此主题相关图片如下:未命名2.jpg
图片点击可在新窗口打开查看
[此贴子已经被作者于2008-11-24 21:38:50编辑过]

--  作者:gdtgl
--  发布时间:2008/11/24 21:25:00
--  

因为项目是不断(减小或增加) 为了避免当增加1个项目,就要更改表结构和报表。

[此贴子已经被作者于2008-11-25 13:17:34编辑过]

--  作者:gdtgl
--  发布时间:2008/11/24 22:07:00
--  
帮助中基本是取关系表中相关的所有数据,但没有按条件取关联表的数据,接着分别填到不同的列中的实例啊。。。。
--  作者:gdtgl
--  发布时间:2008/11/25 1:14:00
--  

试了1天1晚时间了,终于写出来了(分享1下):

dim barow as row = tables("表A").current
dim babianhao as string = barow("编号")

Dim doc As New Printdoc
Dim rt As New prt.RenderTable

dim af as table = Tables("表A.表F")
With Tables("表A.表F")
rt = New prt.RenderTable
rt.Style.GridLines.All = prt.Linedef.Default \'网格线为默认类型
For n As integer = 0 To .Rows.Count - 1      
    rt.Cells(0,0).Text = "编号"
    rt.Cells(0,1).Text ="采样编号"   
    rt.Cells(0,2+n).Text = .rows(n)("项目")

Dim cmd As New SQLCommand \'定义一个SQL命令
Dim dt As DataTable \'定义一个数据表变量
   cmd.CommandText = "Select 编号,采样编号,值 from {表C} where 编号 = \'"& babianhao &"\' and 项目= \'"& Tables("表A.表F").rows(n)("项目") &"\' "
   dt = cmd.ExecuteReader() \'生成一个临时表
   For r As integer = 0 To dt.DataRows.Count - 1
        rt.Cells(r+1,0).Text = dt.DataRows(r)("编号")
        rt.Cells(r+1,1).Text = dt.DataRows(r)("采样编号")
        rt.Cells(r+1,2+n).Text = dt.DataRows(r)("值")
   Next

next
End With
doc.Body.Children.Add(rt)
doc.Preview

[此贴子已经被作者于2008-11-25 3:03:25编辑过]

--  作者:老有所乐
--  发布时间:2008/11/25 7:11:00
--  
学习,谢谢分享!
--  作者:gdtgl
--  发布时间:2008/11/25 13:03:00
--  

改全部用foxtable的语言写:(因用外部数据库,打印前已加载数据,再用select语句从后台找数据是效率的重复)

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目2.table



\'\'\'
Dim doc As New Printdoc
dim barow as row = tables("表A").current
dim babianhao as string = barow("编号")
Dim rt As prt.RenderTable
With Tables("表A.表F")
rt = New prt.RenderTable
rt.Style.GridLines.All = prt.Linedef.Default \'网格线为默认类型
For n As integer = 0 To .Rows.Count - 1      
    rt.Cells(0,0).Text = "编号"
    rt.Cells(0,1).Text ="采样编号"   
    rt.Cells(0,2+n).Text = .rows(n)("项目")

Dim bctbl As dataTable = dataTables("表C")
dim bcrows as list(of datarow)
bcrows = bctbl.select("[编号] = \'"& babianhao &"\' and  [项目]= \'"& Tables("表A.表F").rows(n)("项目") &"\' ")
    for bci as integer = 0 to bcrows.count -1
         for each bcrow as datarow in bcrows
            rt.Cells(1+bci,0).Text = bcrows(bci)("编号")
            rt.Cells(1+bci,1).Text = bcrows(bci)("采样编号")
            rt.Cells(1+bci,2+n).Text = bcrows(bci)("值")
         next
    next
next
end with
doc.Body.Children.Add(rt)
doc.Preview()


--  作者:狐狸爸爸
--  发布时间:2008/11/25 16:26:00
--  
呵呵,目前在论坛,专业报表你是研究得最好的了,你搞不定的,估计也没有人能帮上手的。