以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  这段代码的表达式是否有问题  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=132646)

--  作者:ZJZK2018
--  发布时间:2019/3/26 16:02:00
--  这段代码的表达式是否有问题
下面红色代码可以计算出结果,但换在控件计算不出结果,为什么?


Dim tb As Table = Tables(e.Form.name & "_Table01")
Dim xfl As String = e.Form.Controls("cmb_xfl").text
Dim ndr As Row
For Each dc As Col In tb.Cols
    If dc.Name = xfl Then
        For i As Decimal = -2 To 1 Step 0.2
            ndr = tb1.AddNew()
            ndr("下浮点") = i
            If i < 0 Then
                \'ndr("总个数") = tb.Compute("Count([开标日期])", "中标下浮率_风险控件价  >= " & i/100 & " And 中标下浮率_风险控件价  < " & (i+0.2)/100)
                ndr("总个数") = tb.Compute("Count([开标日期])", "[xfl]  >= " & i/100 & " And [xfl] < " & (i+0.2)/100)
            ElseIf i > 0 Then
                ndr("总个数") = tb.Compute("Count([开标日期])","[xfl] > " & (i-0.2)/100 & " And [xfl] <= " & i/100)
            Else
                ndr("总个数") = tb.Compute("Count([开标日期])","[xfl] = 0")
            End If
        Next
    End If
Next

--  作者:有点甜
--  发布时间:2019/3/26 16:35:00
--  
ndr("总个数") = tb.Compute("Count([开标日期])",  xfl & " >= " & i/100 & " And " & xfl & " < " & (i+0.2)/100)
--  作者:ZJZK2018
--  发布时间:2019/3/26 20:43:00
--  
老师还是有点问题:
下面红色代码数据统计不出来:

Dim xfl As String = e.Form.Controls("cmb_xfl").text
Dim xfl1 As Double = e.Form.Controls("cmb_xfl1").Value
Dim xfl2 As Double = e.Form.Controls("cmb_xfl2").Value
Dim xfln As Double = e.Form.Controls("cmb_xfl3").Value
Dim ndr As Row
For Each dc As Col In tb.Cols
    If dc.Name = xfl Then
        For i As Decimal = xfl1 To xfl2 Step xfln
            ndr = tb1.AddNew()
            ndr("下浮点") = i
            If i < 0 Then
                ndr("总个数") = tb.Compute("Count([开标日期])", xfl & " >= " & i/100 & " And " & xfl & " < " & (i+xfln)/100)
            ElseIf i > 0 Then
                ndr("总个数") = tb.Compute("Count([开标日期])",xfl & " > " & (i-xfln)/100 & " And  " & xfl & " <= " & i/100)
            Else
                ndr("总个数") = tb.Compute("Count([开标日期])","xfl Is Null")   \'来源表中是空值,但空值个数没有统计出来
            End If
            For Each clnm As String  In lst

       \'下面代码无法统计出来个数
                If i < 0 Then
                    ndr(clnm) = tb.Compute("Count([xlf])",xfl & " >= " & i/100 & " And " & xfl & " < " & (i+xfln)/100 & " And Convert(开标日期,\'System.String\') Like \'%" & clnm & "%\'" )
                ElseIf i > 0 Then
                    ndr(clnm) = tb.Compute("Count([xfl])",xfl & " > " & (i-xfln)/100 & " And " & xfl & " <= " & i/100 & " And Convert(开标日期,\'System.String\') Like \'%" & clnm & "%\'" )
                Else
                    ndr(clnm) = tb.Compute("Count([xfl])","xfl Is Null And Convert(开标日期,\'System.String\') Like \'%" & clnm & "%\'" )
                End If
            Next
        Next
    End If
Next


图片点击可在新窗口打开查看此主题相关图片如下:aaa.png
图片点击可在新窗口打开查看


图片点击可在新窗口打开查看此主题相关图片如下:bbb.png
图片点击可在新窗口打开查看



--  作者:ZJZK2018
--  发布时间:2019/3/27 9:51:00
--  
咋不回复我的????
--  作者:有点甜
--  发布时间:2019/3/27 10:43:00
--  

1、ndr("总个数") = tb.Compute("Count([开标日期])", xfl & " Is Null"

 

2、ndr(clnm) = tb.Compute("Count(" & xlf & ")",xfl & " >= " & i/100 & " And " & xfl & " < " & (i+xfln)/100 & " And Convert(开标日期,\'System.String\') Like \'%" & clnm & "%\'" )


--  作者:ZJZK2018
--  发布时间:2019/3/27 11:11:00
--  
下面红色代码数据统计不出来:

                If i < 0 Then
                    ndr(clnm) = tb.Compute("Count(" & xfl & ")",xfl & " >= " & i/100 & " And " & xfl & " < " & (i+xfln)/100 & " And Convert(开标日期,\'System.String\') Like \'%" & clnm & "%\'" )
                ElseIf i > 0 Then
                    ndr(clnm) = tb.Compute("Count(" & xfl & ")",xfl & " > " & (i-xfln)/100 & " And " & xfl & " <= " & i/100 & " And Convert(开标日期,\'System.String\') Like \'%" & clnm & "%\'" )
                Else
                    ndr(clnm) = tb.Compute("Count(" & xfl & ")",xfl & " Is Null And Convert(开标日期,\'System.String\') Like \'%" & clnm & "%\'" )
                End If

--  作者:有点甜
--  发布时间:2019/3/27 11:20:00
--  

改成,比如

 

ndr(clnm) = tb.Compute("Count(_Identify)",xfl & " Is Null And Convert(开标日期,\'System.String\') Like \'%" & clnm & "%\'" )


--  作者:ZJZK2018
--  发布时间:2019/3/27 11:45:00
--  
还是不行,我改“_SortKey”也不行

图片点击可在新窗口打开查看此主题相关图片如下:pppp.png
图片点击可在新窗口打开查看


--  作者:有点甜
--  发布时间:2019/3/27 12:49:00
--  
实例发上来测试。
--  作者:ZJZK2018
--  发布时间:2019/3/27 20:51:00
--  
我做了个实例是对的,详见下面附件及附图,但在我的正式软件中又不对,二个唯一不同点是:正式软件中是先生成“查询表”,而附件中是直接从内部数据表中生成??

图片点击可在新窗口打开查看此主题相关图片如下:yyy.png
图片点击可在新窗口打开查看

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:下浮率汇总.foxdb

正式软件中是先生成“查询表”,代码如下:

Dim mdt As DataTable
Dim nids As String = DataTables("系统编号").GetComboListString("系统编号")
Dim jb As New SQLJoinTableBuilder("开标记录汇总表","系统编号")
jb.C
jb.AddTable("系统编号","系统编号","开标记录","系统编号")
jb.AddTable("系统编号","系统编号","招标信息","系统编号")
jb.AddCols("{系统编号}.系统编号","{系统编号}.项目编号","{系统编号}.项目名称","{系统编号}.咨询类型","{系统编号}.归属部门","{系统编号}.业务性质","{系统编号}.投标地区","{系统编号}.工程类别","{系统编号}.报价方式", _
"{开标记录}.评标方式","{开标记录}.开标日期","{开标记录}.开标时间","中标报价","公司报价","中标球号","公司球号","投标家数","中标单位","评标基准价","开标情况", _
"交易中心","开标室","工期要求","投资总额","本期概算","收费计费额","收费基价","预算审核价","招标控制价","最高限价","风险控制价","最低限价","报价区间")

jb.AddExp("球号比例_中标","Case When 中标球号 > 0 And 投标家数 > 0 Then 中标球号 / 投标家数 Else 0 End")
jb.AddExp("球号比例_公司","Case When 公司球号 > 0 And 投标家数 > 0 Then 公司球号 / 投标家数 Else 0 End")

jb.AddExp("中标下浮率_收费基价","Case When 收费基价 <> 0 Then (收费基价 - 中标报价) / 收费基价 Else Null End")
jb.AddExp("中标下浮率_预算审核价","Case When 预算审核价 <> 0 Then (预算审核价 - 中标报价) / 预算审核价 Else Null End")
jb.AddExp("中标下浮率_招标控制价","Case When 招标控制价 <> 0 Then (招标控制价 - 中标报价) / 招标控制价 Else Null End")
jb.AddExp("中标下浮率_最高限价","Case When 最高限价 <> 0 Then (最高限价 - 中标报价) / 最高限价 Else Null End")
jb.AddExp("中标下浮率_风险控制价","Case When 风险控制价 <> 0 Then (风险控制价 - 中标报价) / 风险控制价 Else Null End")
jb.AddExp("中标下浮率_最低限价","Case When 最低限价 <> 0 Then (最低限价 - 中标报价) / 最低限价 Else Null End")
jb.AddExp("中标下浮率_中标与评标价差值","Case When 评标基准价 <> 0 Then (评标基准价 - 中标报价) / 评标基准价 Else Null End")

jb.AddExp("公司下浮率_收费基价","Case When 收费基价 <> 0 Then (收费基价 - 公司报价) / 收费基价 Else Null End")
jb.AddExp("公司下浮率_预算审核价","Case When 预算审核价 <> 0 Then (预算审核价 - 公司报价) / 预算审核价 Else Null End")
jb.AddExp("公司下浮率_招标控制价","Case When 招标控制价 <> 0 Then (招标控制价 - 公司报价) / 招标控制价 Else Null End")
jb.AddExp("公司下浮率_最高限价","Case When 最高限价 <> 0 Then (最高限价 - 公司报价) / 最高限价 Else Null End")
jb.AddExp("公司下浮率_风险控制价","Case When 风险控制价 <> 0 Then (风险控制价 - 公司报价) / 风险控制价 Else Null End")
jb.AddExp("公司下浮率_最低限价","Case When 最低限价 <> 0 Then (最低限价 - 公司报价) / 最低限价 Else Null End")

jb.AddExp("基准价下浮率_收费基价","Case When 收费基价 <> 0 Then (收费基价 - 评标基准价) / 收费基价 Else Null End")
jb.AddExp("基准价下浮率_预算审核价","Case When 预算审核价 <> 0 Then (预算审核价 - 评标基准价) / 预算审核价 Else Null End")
jb.AddExp("基准价下浮率_招标控制价","Case When 招标控制价 <> 0 Then (招标控制价 - 评标基准价) / 招标控制价 Else Null End")
jb.AddExp("基准价下浮率_最高限价","Case When 最高限价 <> 0 Then (最高限价 - 评标基准价) / 最高限价 Else Null End")
jb.AddExp("基准价下浮率_风险控制价","Case When 风险控制价 <> 0 Then (风险控制价 - 评标基准价) / 风险控制价 Else Null End")
jb.AddExp("基准价下浮率_最低限价","Case When 最低限价 <> 0 Then (最低限价 - 评标基准价) / 最低限价 Else Null End")


jb.Filter =  "{系统编号}.系统编号 In (\'" & nids.Replace("|","\',\'") & "\') And 中标单位 Is Not Null"   \'这个地方加载是有问题的
jb.Order = "开标日期 DESC,开标时间"   \'指定排序列
\'mdt = jb.Build(True)   \'参数设置为True,生成一个临时表,不在主界面显示
mdt = jb.Build()   \'参数设置为True,生成一个临时表,在主界面显示
\'jb.Build(True)   \'参数设置为True,生成一个临时表,不在主界面显示
Vars("KBJLHZB") = mdt  \'生成变量--开标记录汇总表