Foxtable(狐表)用户栏目专家坐堂 → 传入的表格格式数据流(TDS)远程过程调用(RPC)协议流不正确


  共有3453人关注过本帖树形打印复制链接

主题:传入的表格格式数据流(TDS)远程过程调用(RPC)协议流不正确

帅哥哟,离线,有人找我吗?
cnsjroom
  11楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:七尾狐 帖子:1571 积分:11238 威望:0 精华:0 注册:2021/1/17 17:06:00
回复:(有点蓝)应该还是遍历的问题。不管Products12...  发帖心情 Post By:2023/1/6 15:25:00 [只看该作者]

老师可否帮忙修正简化一下呢? 

 

当前代码初步实现预期效果

代码如下:

Dim cmd As New SQ LC ommand
cmd.Connec tio nName = "主数据源"
Dim dt,dt1,dt12 As DataTable

cmd.CommandText = "dele te {干部平时考核民主测评汇总表}"    '运行之前先清空  干部平时考核民主测评汇总表
cmd.ExecuteReader
cmd.CommandText = "SEL ECT * From {干部平时考核民主测评表}"
dt = cmd.ExecuteReader()
cmd.CommandText = "SEL ECT * From {干部平时考核民主测评汇总表}"
dt1 = cmd.ExecuteReader(True)
cmd.CommandText = "SELE CT * From {干部台账} where 所属部门='委领导'"
dt12 = cmd.ExecuteReader()

Dim Products As List(Of String)
Products = dt.GetValues("测评对象")   '从干部平时考核民主测评表中获取测评对象  不重复值

Dim Products12 As List(Of String)
Products12 = dt12.GetValues("姓名","姓名<>''")  '从干部台账中获取所属部门属于委领导的姓名 不重复值

Dim cnt,cnt1,cnt2,cnt3,cnt4,cnt5 As Integer
Dim cnt11,cnt111,cnt112,cnt113,cnt114,cnt115 As Integer


For Each Product As String In Products   '遍历所有测评对象值,
    Output.Show(Product)
    'Dim dr1  As  DataRows =
    'Dim Products1 As List(Of String())
    'Products1 = dt.GetValues("测评对象|年度|季度|测评对象身份|职务职级|编制类型|操作人员|考核类型"," 测评对象='"& Product &"'")
    'For Each Product1 As String() In Products1
    'Output.Show(Product1(0)&Product1(1)&Product1(2))
    Dim dr  As  DataRow
    dr =dt1.AddNew
    dr("guid")=System.Guid.NewGuid().ToString()
    dr("测评对象")=Product

    'For Each Product12 As String In Products12    '遍历所获取得到的委领导名字,然后去查找所有测评对象中   操作人员是委领导名字的数据
        'dr("年度")=Product1(1)
        'dr("季度")=Product1(2)
        'dr("测评对象身份")=Product1(3)
        'dr("职务职级")=Product1(4)
        'dr("编制类型")=Product1(5)
        'dr("考核类型")=Product1(7)
        dr("是否完成")="已完成"
        'If Product1(6) = Product12  Then    '如果操作人员等于委领导人员
        output.show("测评对象 = '"& Product &"' and 所属部门='委领导'")
        cnt = dt.Compute("Count([好])", "测评对象 = '"& Product &"' and 所属部门='委领导'")    '如果操作人员属于委领导,则将对应的好等次的数据 计算为A好里面的
        output.show(cnt)
        If cnt>0 Then
            dr("A好")=cnt
            output.show("A好" & cnt)
            'output.show(dr("A好"))
        Else
            dr("A好")=Nothing
        End If
        cnt1 = dt.Compute("Count([较好])", "测评对象 = '"& Product  &"' and 所属部门='委领导'")
        If cnt1>0 Then
            dr("A较好")=cnt1
            'output.show("A较好" & cnt1)
        Else
            dr("A较好")=Nothing
        End If
        cnt2 = dt.Compute("Count([一般])", "测评对象 = '"& Product  &"' and 所属部门='委领导'")
        If cnt2>0 Then
            dr("A一般")=cnt2
        Else
            dr("A一般")=Nothing
        End If
        cnt3 = dt.Compute("Count([较差])", "测评对象 = '"& Product  &"' and 所属部门='委领导'")
        If cnt3>0 Then
            dr("A较差")=cnt3
        Else
            dr("A较差")=Nothing
        End If
       
        'Else  '如果操作人员不等于委领导人员
       
        cnt11 = dt.Compute("Count([好])", "测评对象 = '"& Product  &"' and 所属部门<>'委领导'")  '如果操作人员不属于委领导,则将对应的好等次的数据 计算为B好里面的
        If cnt11>0 Then
            dr("B好")=cnt11
            'output.show("B好" & cnt11)
            'output.show(dr("B好"))
        Else
            dr("B好")=Nothing
        End If
       
        cnt111 = dt.Compute("Count([较好])", "测评对象 = '"& Product  &"' and 所属部门<>'委领导'")
        If cnt111>0 Then
            dr("B较好")=cnt111
        Else
            dr("B较好")=Nothing
        End If
        cnt112 = dt.Compute("Count([一般])", "测评对象 = '"& Product  &"' and 所属部门<>'委领导'")
        If cnt112>0 Then
            dr("B一般")=cnt112
        Else
            dr("B一般")=Nothing
        End If
        cnt113 = dt.Compute("Count([较差])", "测评对象 = '"& Product  &"' and 所属部门<>'委领导'")
        If cnt113>0 Then
            dr("B较差")=cnt113
        Else
            dr("B较差")=Nothing
        End If
       
        'End If
        '
        '计算好 较好  一般   较差 总数据
        dr("好")=dr("A好")+dr("B好")
        dr("较好")=dr("A较好")+dr("B较好")
        dr("一般")=dr("A一般")+dr("B一般")
        dr("较差")=dr("A较差")+dr("B较差")
        cnt4=9
        cnt114=87
        '计算总分  分别按照好1?较好0.8?一般0.6?弃权0.3的权重对应piao数,计算班子成员投piao总数+一般干部职工投piao总数之和除2来获取当前考核总分,并以总分进行从高到低顺序排名,获取考核结果.
        'If cnt3 >1 Then  '如果存在较差数据,则总分直接为零
        'dr("备注")=0
        'Else
        Dim i1 As Integer= (((dr("A好")*1)+(dr("A较好")*0.8)+(dr("A一般")*0.6)+(cnt3*0.3))/cnt4)*100
        Dim i2 As Integer= (((dr("B好")*1)+(dr("B较好")*0.8)+(dr("B一般")*0.6)+(cnt113*0.3))/cnt114)*100
        dr("总分")= (i1+i2)/2
        'dr("总分")=(((((dr("A好")*1)+(dr("A较好")*0.8)+(dr("A一般")*0.6)+(cnt3*0.3))/cnt4)*100))+((((dr("B好")*1)+(dr("B较好")*0.8)+(dr("B一般")*0.6)+(cnt113*0.3))/cnt114)*100)))/2
        'End If
       
        dr.save
        'Next
    'Next
Next
'dt1.Save

 

[此贴子已经被作者于2023/1/6 15:30:34编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  12楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:107846 积分:548581 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2023/1/6 15:36:00 [只看该作者]

考虑根据测评对象、所属部门,对好 较好  一般   较差进行分组统计,然后把统计表数据填充到{干部平时考核民主测评汇总表}

 回到顶部
帅哥哟,离线,有人找我吗?
cnsjroom
  13楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:七尾狐 帖子:1571 积分:11238 威望:0 精华:0 注册:2021/1/17 17:06:00
回复:(有点蓝)考虑根据测评对象、所属部门,对好 较...  发帖心情 Post By:2023/1/9 10:15:00 [只看该作者]

'定义一个GroupTableBuilder,名称为"统计表1",对订单表进行统计.
Dim b As New GroupTableBuilder("统计表1",DataTables("干部平时考核民主测评表"))
b.Groups.AddDef("测评对象") '添加客户列用于分组
b.Groups.AddDef("所属部门") '添加产品列用于分组
b.Totals.AddDef("好") '添加数量列用于统计   这四个状态都是打勾而不是数字
b.Totals.AddDef("较好") '添加金额列用于统计
b.Totals.AddDef("一般") '添加数量列用于统计
b.Totals.AddDef("较差") '添加金额列用于统计

b.Build '生成统计表
MainTable = Tables("统计表1") '打开生成的统计表

 

 

提示这个

错误的事件名称
System.InvalidCastException: 从字符串“√”到类型“Decimal”的转换无效。
   在 Microsoft.VisualBasic.CompilerServices.Conversions.ToDecimal(String Value, NumberFormatInfo NumberFormat)
   在 Microsoft.VisualBasic.CompilerServices.Conversions.ToDecimal(Object Value, NumberFormatInfo NumberFormat)
   在 Foxtable.GroupTableBuilder.o.OoooO.(DataRow A_0)
   在 Foxtable.GroupTableBuilder.OOoO..O.()
2023-01-09 10:13:52


 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  14楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:107846 积分:548581 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2023/1/9 10:24:00 [只看该作者]

在Totals集合中添加一个统计列的语法如下: 

Totals.AddDef(Name)
Totals.AddDef(Name, NewName)
Totals.AddDef(Name, NewName, NewCaption)
Totals.AddDef(Name, Aggregate)
Totals.AddDef(Name, Aggregate, NewName)
Totals.AddDef(Name, Aggregate, NewName, NewCaption)

参数说明 

Name:        字符型,指定统计列。
NewName:     字符型,用于给统计列指定一个新的名称,这个名称在统计表中显示。
NewCaption:  字符型,用于给统计列设置标题。
Aggregate:  AggregateEnum枚举型,用于指定统计类型,默认是求和。

AggregateEnum型枚举的可选值:

Average:平均值
Count:  记录数
Max:    最大值
Min:    最小值
Sum:    累积值


示例五,统计不同客户在1999年各季度下的订单数,以及总的订购数量

复制以下代码至命令窗口: 

Dim b As New GroupTableBuilder("统计表1",DataTables("订单"))
b.Filter = 
"[日期] >= #1/1/1999# And [日期]<= #12/31/1999#"
b.Groups.AddDef(
"客户")'添加客户列用于分组
'添加日期列用于分组,按季度分组,并用"季度"代替原名称

b.Groups.AddDef(
"日期",DateGroupEnum.Quarter,"季度")
'添加客户列用于统计,其实对于Count类型的统计,可用任何列作为统计列。

b.Totals.AddDef(
"客户",AggregateEnum.Count,"订单数")
b.Totals.AddDef(
"数量","订购数量"'添加数量列用于统计
b.Build '生成统计表
MainTable = Tables("统计表1"'打开生成的统计表


 回到顶部
总数 14 上一页 1 2