以文本方式查看主题

-  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=173893)

--  作者:蓝蚂蚁
--  发布时间:2021/12/21 14:57:00
--  列名作为表达式

DataColChanged代码:

Dim dt As DataTable = DataTables("中继表")
Select Case e.DataCol.name
    Case "N1"
        Dim m As String=e.DataCol.Name
        Dim z1 As Double = dt.Compute("Count(N1)","N1=\'1\' or N1=\'1/休\'")

        Dim dr1 As DataRow = DataTables("班次标记").Find("表头=\'一班人数\'")
        If dr1 IsNot Nothing Then
            dr1("N1") =z1
        End If
其中红色字体的代码能不能换成:        Dim z1 As Double =dt.Compute("Count(m &)","m &=\'1\' or m &=\'1/休\'");           dr1(m &) =z1

实现的功能:在中继表中统计N1列出现“1”和“1/休”的个数,之后把这个个数填到班次标记表中一班人数对应的N1列。由于列有N1、N2、..............N31(即日期1到31日)每列都是差不多的代码,所以想简化一下。

--  作者:有点蓝
--  发布时间:2021/12/21 15:27:00
--  
……
Select Case e.DataCol.name
    Case "N1","N2",....
        Dim m As String=e.DataCol.Name
        Dim z1 As Double = dt.Compute("Count(" & m & ")",m & "=\'1\' or " & m & "=\'1/休\'")
        Dim dr1 As DataRow = DataTables("班次标记").Find("表头=\'一班人数\'")
        If dr1 IsNot Nothing Then
            dr1(m) =z1
        End If

--  作者:蓝蚂蚁
--  发布时间:2021/12/21 20:21:00
--  
 Dim z1 As Double = dt.Compute("Count(" & m & ")",m & "=\'1\' or " & m & "=\'1/休\'")  如果加入列名为“勾选”(逻辑型)作为条件,这条语句是不是: Dim z1 As Double = dt.Compute("Count(" & m & ")",”勾选=true and m & "=\'1\' or " & m & "=\'1/休\'") 
--  作者:有点蓝
--  发布时间:2021/12/21 20:31:00
--  
Dim z1 As Double = dt.Compute("Count(" & m & ")",m & "=\'1\' or " & m & "=\'1/休\' and 勾选=true")