以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  excel报表求助  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=63951)

--  作者:花开的声音
--  发布时间:2015/2/2 8:49:00
--  excel报表求助
如图,分组统计中,同样的代码,放在表的下面就能正确统计,放在表头就统计不出来,怎么回事。想放在上面统计每个分组的法律服务所数,怎么弄,谢谢!
图片点击可在新窗口打开查看此主题相关图片如下:qq图片20150202084909.jpg
图片点击可在新窗口打开查看

--  作者:Bin
--  发布时间:2015/2/2 8:54:00
--  
http://www.foxtable.com/bbs/dispbbs.asp?BoardID=2&ID=63886&skin=0
--  作者:有点甜
--  发布时间:2015/2/2 9:01:00
--  

 呃,可以用全局变量和报表事件,参考

 

http://www.foxtable.com/help/topics/1391.htm

 

http://www.foxtable.com/help/topics/1954.htm

 


--  作者:花开的声音
--  发布时间:2015/2/2 10:33:00
--  

那我通过目录树的复选框,用filter筛选出记录后,是不是要把筛选结果保存为一张表,才能进一步设置条件筛选出符合条件的记录的数量并付值给var变量?如是的话,那怎样将筛选结果保存为一张表?


--  作者:有点甜
--  发布时间:2015/2/2 10:40:00
--  
  不需要啊,不是能直接统计的么,用compute函数啊。
--  作者:花开的声音
--  发布时间:2015/2/2 12:43:00
--  

\'------------筛选出符合条件的记录--------------
Dim trv As WinForm.TreeView = e.Sender
Dim flt As String
Dim nd As WinForm.TreeNode
Dim pd As WinForm.TreeNode
Dim notchecked As Integer
Dim t As Table
t = Tables("基层法律服务机构信息表")
If e.Node.Name = "全部"  Then
    If e.Node.Checked = True Then
        For Each nd In trv.AllNodes
            If nd.Name <> "全部"  Then
                nd.Checked = False
            End If
        Next
        t.Filter = ""
    Else
        For Each nd In trv.AllNodes
            nd.Checked = False
        Next
        t.Filter = (1 = 2)
    End If
    trv.CollapseAll
    Return
Else
    trv.AllNodes(0).Checked = False
End If
For Each nd In e.node.allNodes
    nd.Checked = False
Next
pd = e.Node.ParentNode
Do While pd IsNot Nothing
    pd.Checked = False
    pd = pd.ParentNode
Loop
For Each nd In trv.AllNodes
    If nd.Checked  Then
        Dim vals As String = ""
        If vals > "" Then
            vals = vals & " And "
            Select Case e.Node.Level
                Case 0
                    vals &= "主管司法局= \'" & nd.DataRow("主管司法局") & "\'"
                Case 1
                    vals &= "主管司法局=\'" & nd.DataRow("主管司法局") & "\' and  法律服务所= \'" & nd.DataRow("法律服务所") & "\'"
            End Select
        Else
            vals=vals
            Select Case e.Node.Level
                Case 0
                    vals &= "主管司法局= \'" & nd.DataRow("主管司法局") & "\'"
                Case 1
                    vals &= "主管司法局=\'" & nd.DataRow("主管司法局") & "\' and  法律服务所= \'" & nd.DataRow("法律服务所") & "\'"
            End Select
            If flt > "" Then
                flt = flt & " Or (" & vals & ")"
            Else
                flt = vals
            End If
            notchecked + = 1
        End If
    End If
Next
If flt > "" AndAlso notchecked > 0 Then
    t.Filter = flt
   \' Dim cont1 As Double = Tables("基层法律服务机构信息表").Compute("count(法律服务所)", "主管司法局 = \'" & e.Node.Name & "\'")
   \' vars("分组统计法律服务所数")=cont1
   \' MessageBox.Show(vars("分组统计法律服务所数"))
Else
    t.Filter = (1 = 2)
End If


 


\'-----------加载相应报表----------

Dim Book As New XLS.Book(ProjectPath & "Attachments\\基层法律服务所名册.xls")
Dim fl As String = ProjectPath & "Reports\\基层法律服务所名册.xls"
Book.Build() \'生成细节区
Book.Marks.Add("法律服务所数",Tables("基层法律服务机构信息表").Compute("count(法律服务所)", "主管司法局 = [主管司法局]"))
Book.Save(fl) \'保存工作簿
\'book.Save("c:\\data\\test.xls")

Dim App As New MSExcel.Application
app.DisplayAlerts = False
Dim Wb As MSExcel.Workbook = App.WorkBooks.Open(fl)
Wb.SaveAs(Filename:=ProjectPath & "Reports\\基层法律服务所名册.htm", FileFormat:=MSExcel.XlFileFormat.xlHtml)
wb.close
app.quit

Dim str As String = FileSys.ReadAllText(ProjectPath & "Reports\\基层法律服务所名册.htm",  Encoding.Default)
\'str = str.Replace("<style>", "<style>table {margin:auto}")
str = str.Replace("<style>", "<style>body{ text-align: center;} table {margin:auto}")
FileSys.WriteAllText(ProjectPath & "Reports\\基层法律服务所名册.htm",  str, False, Encoding.Default)

Dim str1 As String = FileSys.ReadAllText(ProjectPath & "Reports\\基层法律服务所名册.files\\stylesheet.css", Encoding.Default)
str1="body{ text-align: center;} Table {margin-left:auto ; margin-right:auto}" & str1
FileSys.WriteAllText(ProjectPath & "Reports\\基层法律服务所名册.files\\stylesheet.css",str1, False, Encoding.Default)


Dim wbr As WinForm.WebBrowser = Forms("基层法律服务机构报表").Controls("WebBrowser1")
Dim rpt As String = ProjectPath & "Reports\\基层法律服务所名册.htm"
wbr.AddRess = rpt

 

在报表的表头上设计标记  <法律服务所数> ,在左边的目录树的复选框改变豆腐中用以上代码,怎么报表的表头什么也没有显示,要怎么改才行。目的是要在表头上显示每个分组中的记录数。谢谢!


--  作者:花开的声音
--  发布时间:2015/2/2 14:09:00
--  
麻烦哪位帮看下。
--  作者:有点甜
--  发布时间:2015/2/2 14:10:00
--  

 先赋值给标记,在build啊

 

Book.Marks("法律服务所数") = Tables("基层法律服务机构信息表").Compute("count(法律服务所)", "主管司法局 = [主管司法局]")

Book.Build() \'生成细节区


--  作者:花开的声音
--  发布时间:2015/2/2 14:22:00
--  
嗯,在表头上单独用<法律服务所数> ,数量是生成正确了。在表头显示时,这个字符串,生成不了。请帮看下,该怎么写的。<[主管司法局] & ":" & "共" & <法律服务所数> & "个法律服务所">
--  作者:Bin
--  发布时间:2015/2/2 14:27:00
--  
<[主管司法局] & ":共<法律服务所数>个法律服务所">

或者分开为3个单元格  中间放 <法律服务所数> 看看

[此贴子已经被作者于2015-2-2 14:30:02编辑过]