以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  请教甜大师  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=55473)

--  作者:hbhb
--  发布时间:2014/8/17 18:32:00
--  请教甜大师
大师:如项目请教如下
如何在窗口中点击计算按钮,根据表a生成选定期限的报表。
1、本期数为选定期间合计计数
2、本年累计数为1-截止月份的累计数

图片点击可在新窗口打开查看

--  作者:hbhb
--  发布时间:2014/8/17 18:32:00
--  
项目
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目9.zip


--  作者:有点甜
--  发布时间:2014/8/17 19:16:00
--  

 代码

 

Dim dtb As DataTable = DataTables("表B")
Dim dta As DataTable = DataTables("表A")
dtb.DataRows.Clear

Dim filter As String = "1=1"
Dim filter2 As String = "1=1"

Dim c1 As WinForm.ComboBox = e.Form.Controls("ComboBox1")
Dim c2 As WinForm.ComboBox = e.Form.Controls("ComboBox2")

If c1.Text > "" Then
    filter &= " and Convert(月份, \'System.Int32\') >= " & c1.text
End If

If c2.Text > "" Then
    filter &= " and Convert(月份, \'System.Int32\') <= " & c2.text
    filter2 &= " and Convert(月份, \'System.Int32\') <= " & c2.text
End If

For Each name As String In dta.GetValues("姓名", "姓名 is not null")
    Dim ndr As DataRow = dtb.AddNew
    ndr("姓名") = name
    ndr("本期工资") = dta.Compute("sum(月工资)", filter & " and 姓名 = \'" & name & "\'")
    ndr("全年累计") = dta.Compute("sum(月工资)", filter2 & " and 姓名 = \'" & name & "\'")
Next


--  作者:hbhb
--  发布时间:2014/8/17 21:28:00
--  
谢谢!精简高效,我为何写不出来?问题在哪里?
"1=1"什么意思?

--  作者:有点甜
--  发布时间:2014/8/17 21:32:00
--  
 1=1 是为了和后面 and xxx = yyy 拼凑,没有特别意义,以防止拼凑后的语法出错。
[此贴子已经被作者于2014-8-17 21:33:01编辑过]