以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]类型转换  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=143608)

--  作者:lgj716330
--  发布时间:2019/11/29 11:41:00
--  [求助]类型转换
Dim b As New SQLGroupTableBuilder("统计表","积压")
b.C 
b.AddTable("积压", "部门编号","店铺档案","业务系统编号")
 b.Groups.AddDef("{积压}.部门名称")
 b.Groups.AddDef("{积压}.部门编号")
 b.Totals.AddDef("调拔汇总")
 b.Totals.AddDef("零售汇总")
 b.Totals.AddExp("平均售罄率","-isnull([零售汇总],0)/isnull([调拔汇总],0)")


b.Build 

Dim bjs As List(Of String) = DataTables("统计表").GetValues("部门编号|平均售罄率")
For Each bj As String In bjs
    Dim drs As List(Of DataRow) = DataTables("店铺档案").Select("[部门编号] = " & bj(0))
    For n As Integer = 0 To drs.Count - 1 
        If n > 0 Then 
            drs(n)("参考售罄率") = bj(1) 
        End If
    Next
Next

无法将类型为“System.Collections.Generic.List`1[System.String[]]”的对象强制转换为类型“System.Collections.Generic.List`1[System.String]”。

--  作者:有点蓝
--  发布时间:2019/11/29 12:05:00
--  
Dim bjs As List(Of String()) = DataTables("统计表").GetValues("部门编号|平均售罄率")
--  作者:lgj716330
--  发布时间:2019/11/29 12:14:00
--  

图片点击可在新窗口打开查看此主题相关图片如下:3db6476b-14a5-4fa6-acb2-0783dc096dd9.png
图片点击可在新窗口打开查看

售罄率是double类型,不知怎么调整


[此贴子已经被作者于2019/11/29 12:14:54编辑过]

--  作者:有点蓝
--  发布时间:2019/11/29 13:35:00
--  
For Each bj As String() In bjs
--  作者:lgj716330
--  发布时间:2019/12/1 19:36:00
--  
Dim HZ1 As String
HZ1 = e.Form.Controls("ZZFL").Text 

Dim b As New GroupTableBuilder("统计表1",DataTables("查询表1"))
 b.Groups.AddDef("部门") 
 b.Groups.AddDef(HZ1)
b.Totals.AddDef("销售金额")

b.Build 

Dim bjs As List(Of String()) = DataTables("统计表1").GetValues(HZ1)
For Each  bj As  String() In bjs
    Dim  drs As List(Of  DataRow) = DataTables("统计表1").Select("HZ1 = \'" & bj & "\'", "销售金额 DESC")
     For n As  Integer = 0 To drs.Count -  1  
       If n > 0 AndAlso drs(n)("销售金额") = drs(n-1)("销售金额") Then  
            drs(n)("区内排名") = drs(n-1)("区内排名")  
         Else
             drs(n)("区内排名") = n + 1 
         End If
      Next
Next

出现以下错误

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

[此贴子已经被作者于2019/12/1 19:36:49编辑过]

--  作者:程兴刚
--  发布时间:2019/12/1 19:52:00
--  
检查这一行,去掉括号试试:

For Each  bj As  String() In bjs

--  作者:lgj716330
--  发布时间:2019/12/1 20:52:00
--  
Dim bjs As List(Of String()) = DataTables("统计表1").GetValues(HZ1)
For Each  bj As  String() In bjs

这里的两个()去掉后会提示,未找到列[HZ1],但用msgbox(bjs(0))是能显示列中的值的

--  作者:有点蓝
--  发布时间:2019/12/1 20:55:00
--  
GetValues的帮助请先仔细、认真的看一看:http://www.foxtable.com/webhelp/topics/2747.htm
--  作者:lgj716330
--  发布时间:2019/12/1 21:11:00
--  
嗯,知道问题在哪了
原来e.Form.Controls("ZZFL")这里初始是空值的,现在改成了有默认值,Select("HZ1 = \'" & bj & "\'", 这里改成Select("" & HZ1 & " = \'" & bj & "\'",