简单的数据统计

本节任务

我们希望让用户通过下面的网页输入年月:

单击“开始统计”,由Foxtable统计出该月各产品的销售数量,并显示在用户的浏览器上:

知识准备

用户是通过表单(form)输入数据的,这是我们本节要用到的一个表单:

第1行代码为:

<form action='showtj.htm' enctype='multipart/form-data' method='post' id='form1' name='form1'>

表示用户单击确定按钮后,将结果提交到后台的showtj.htm网页处理,这个表单的名称为form1,数据提交方式为post

再看第3行代码:

年: <input type='number' name='year' id='year' min='2000' max='2018'><br/><br/>

表示这是一个数值输入框,输入值的范围在2000到2018之间,这个输入框的名称(name)为"year",我们必须给输入框指定name属性,因为后台的Foxtable要通过name属性取得输入值。

服务端的HttpRequest事件通过e参数PostValues获取用户输入的值,这是一个字典,键为输入框的name属性,值就是用户所输入的值,例如在HttpRequest事件 获取用户通过上述表单输入的年份的代码为:

Dim y As Integer = 0
'将输入的年转换为整数,因为有的浏览器数值输入框也能输入字符!
Integer.TryParse(e.PostValues("year"), y)

If y = 0 Then
     e
.WriteString("请输入年!")
End If

完整代码

下面是HttpRequest事件的完整代码,代码不长,却完成了生成输入页面、获取用户输入 内容、统计数据,以及呈现统计结果等四大任务:

Select Case e.Path
    Case "saletj.htm"
        Dim sb As New StringBuilder
       
sb.AppendLine("<form enctype='multipart/form-data' action='showtj.htm' method='post' id='form1' name='form1'>")
        sb.AppendLine("请输入要统计的年月:</br></br>")
        sb.AppendLine(
"
: <input type='number' name='year' id='year' min='1999' max='2018'><br/><br/>")
        sb.AppendLine(
"
: <input type='number' name='month' id='month' min='1' max='12'><br/><br/>")
        sb.AppendLine(
"<input Type='submit' name='Sumbit' id='Sumbit' value='
开始统计'>")
        sb.AppendLine("</form>")
        e.WriteString(sb.ToString)
    Case "showtj.htm"
       
Dim y As Integer = 0
        Dim m As Integer = 0
       
Integer.TryParse(e.PostValues("year"), y)
'
获取用户输入的 年
        Integer.TryParse(e.PostValues("month"), m)
'
获取用户输入的月
        If y = 0 OrElse m = 0 Then
            e.WriteString(
"
请输入正确的年月!")
        Else
           
'
根据输入的年月,统计各产品的销售数量
            Dim g As New SQLGroupTableBuilder(
"
统计表1", "订单") '这里使用后台统计,如果数据已经全部加载可以直接用GroupTableBuilder
           
'g.ConnectionName = "数据源" '外部数据表的话要指定数据源名称
            g.Groups.AddDef(
"
产品")
            g.Totals.AddDef(
"
数量")
            g.VerticalTotal = True
            g.Filter =
"Year(
日期) = " & y & " And Month(日期) = " & m  '后台统计才可以使用这种表达式的哦
            Dim dt As DataTable = g.Build(False)
           
'将统计结果输出到用户浏览器
            Dim sb As New StringBuilder
            sb.AppendLine(y & "年" & m & "月各产品销售数量: <br/><br/>")
            For Each dr As DataRow In dt.DataRows
                sb.AppendLine(dr("产品") & ":" & dr("数量") & "<br/>")
            Next
            e.WriteString(sb.ToString)
        End
If
End
Select


本页地址:http://www.foxtable.com/mobilehelp/topics/0021.htm