Foxtable(狐表)用户栏目专家坐堂 → [求助]多值字段与集合问题


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

主题:[求助]多值字段与集合问题

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


加好友 发短信
等级:六尾狐 帖子:1387 积分:10693 威望:0 精华:0 注册:2013/11/8 15:27:00
[求助]多值字段与集合问题  发帖心情 Post By:2019/7/23 9:41:00 [只看该作者]

Dim Vals As List(of String())
Vals = DataTables("凭证辅助信息").GetValues("凭证种类|借方科目编码|贷方科目编码|借方指定辅助核算编码","[凭证种类] = '" & tj6 & "' ")

上面其中“借方科目编码”和“贷方科目编码”列是多值字段,要怎么处理

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


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

想要做什么处理?

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


加好友 发短信
等级:六尾狐 帖子:1387 积分:10693 威望:0 精华:0 注册:2013/11/8 15:27:00
  发帖心情 Post By:2019/7/23 10:05:00 [只看该作者]

Dim Vals As List(of String())
Vals = DataTables("凭证辅助信息").GetValues("借方科目编码|贷方科目编码","[凭证种类] = '" & tj6 & "' ")
假设借方科目编码有两个值,希望集合是“科目1|科目2”这样的形式

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


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

取值后在修改集合,或者使用的时候把逗号替换为竖线(|)
for i as integer = 0 to vals.count - 1
    vals(i)(0) = vals(i)(0).replace(",","|")
next

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


加好友 发短信
等级:六尾狐 帖子:1387 积分:10693 威望:0 精华:0 注册:2013/11/8 15:27:00
  发帖心情 Post By:2019/7/23 12:32:00 [只看该作者]

没搞定,项目有点大,不好上传,补充说明下
For Each dr As DataRow In DataTables("会计凭证导入").DataRows
        If dr.IsNull("借方金额") = False Then
            dr("科目编码") = Vals(i)(0)
希望最终结果是,如果Vals(i)(0),则取多值字段中的“科目1”,如果Vals(i)(1),则取多值字段中的“科目2”

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


加好友 发短信
等级:超级版主 帖子:110574 积分:562760 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/7/23 14:07:00 [只看该作者]

贴出完整代码

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


加好友 发短信
等级:六尾狐 帖子:1387 积分:10693 威望:0 精华:0 注册:2013/11/8 15:27:00
  发帖心情 Post By:2019/7/23 14:47:00 [只看该作者]

Dim b1 As New SQLGroupTableBuilder("统计表2","客户销售汇总表")
b1.C
b1.AddTable("客户销售汇总表","经销商编号","客户档案","业务系统编号") 
b1.Groups.AddDef("总公司") 
b1.Totals.AddDef("吊牌金额") 

b1.Build 

Dim f1 As New Filler
f1.SourceTable = DataTables("统计表2") 
f1.SourceCols = "吊牌金额" 
f1.DataTable = DataTables("会计凭证导入") 
f1.DataCols = "贷方金额" 
f1.Fill() 

Dim Vals1 As List(of String())
Vals1 = DataTables("凭证辅助信息").GetValues("借方科目编码|贷方科目编码")’其中“贷方科目编码”是多值字段
For i As Integer = 0 To Vals1.Count - 1
    For Each dr As DataRow In DataTables("会计凭证导入").DataRows
        If dr.IsNull("贷方金额") = False Then
            dr("科目编码") = Vals1(i)(1) '要求是多值字段“贷方科目编码”的第一个科目即科目1
        End If
    Next
Next

Dim b2 As New SQLGroupTableBuilder("统计表3","客户销售汇总表")
b2.C
b2.AddTable("客户销售汇总表","经销商编号","客户档案","业务系统编号")
b2.Groups.AddDef("总公司") 
b2.Totals.AddDef("吊牌金额") 
b2.Totals.AddDef("结算金额") 
b2.Totals.AddExp("折扣金额","结算金额 - 吊牌金额") 

b2.Build 

Dim f2 As New Filler
f2.SourceTable = DataTables("统计表3") 
f2.SourceCols = "折扣金额" 
f2.DataTable = DataTables("会计凭证导入") 
f2.DataCols = "贷方金额" 
f2.Fill() '填充数据

Dim Vals2 As List(of String())
Vals2 = DataTables("凭证辅助信息").GetValues("借方科目编码|贷方科目编码") ’其中“贷方科目编码”是多值字段
For i As Integer = 0 To Vals2.Count - 1
    For Each dr As DataRow In DataTables("会计凭证导入").DataRows
        If dr.IsNull("贷方金额") = False And dr.IsNull("科目编码") = True Then
            dr("科目编码") = Vals2(i)(2) ‘要求是多值字段“贷方科目编码”的第二个科目即科目2
        End If
    Next
Next

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


加好友 发短信
等级:超级版主 帖子:110574 积分:562760 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/7/23 14:56:00 [只看该作者]

Dim Vals1 As List(of String())
Vals1 = DataTables("凭证辅助信息").GetValues("借方科目编码|贷方科目编码")'其中"贷方科目编码"是多值字段
For i As Integer = 0 To Vals1.Count - 1
    For Each dr As DataRow In DataTables("会计凭证导入").DataRows
        If dr.IsNull("贷方金额") = False Then
            dr("科目编码") = Vals1(i)(1).split(",")(0) '要求是多值字段"贷方科目编码"的第一个科目即科目1
        End If
    Next
Next

Dim Vals2 As List(of String())
Vals2 = DataTables("凭证辅助信息").GetValues("借方科目编码|贷方科目编码") '其中"贷方科目编码"是多值字段
For i As Integer = 0 To Vals2.Count - 1
    For Each dr As DataRow In DataTables("会计凭证导入").DataRows
        If dr.IsNull("贷方金额") = False And dr.IsNull("科目编码") = True Then
dim arr() as string = Vals2(i)(2).split(",")
if arr.length > 1
            dr("科目编码") = arr(1) '要求是多值字段"贷方科目编码"的第二个科目即科目2
end if
        End If
    Next
Next

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


加好友 发短信
等级:六尾狐 帖子:1387 积分:10693 威望:0 精华:0 注册:2013/11/8 15:27:00
  发帖心情 Post By:2019/7/24 9:13:00 [只看该作者]

dim arr() as string = Vals2(i)(1).split(",")
这样就对了


 回到顶部