以文本方式查看主题

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

--  作者:FOTOER
--  发布时间:2016/4/21 18:14:00
--  [求助]表格转换

请高手给看看问题出在哪里了?

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:表格转换.zip


--  作者:大红袍
--  发布时间:2016/4/21 18:32:00
--  

Dim dtb As New DataTableBuilder("表B")
Dim Names As New List(Of String) 

dtb.AddDef("班级",Gettype(String),10)
dtb.AddDef("姓名",Gettype(String),10)
For Each v As String In DataTables("学生成绩").GetValues("科目")
    dtb.AddDef(v, Gettype(Double))
Names.Add(v) 
Next
dtb.Build()
For Each v As String() In DataTables("学生成绩").GetValues("班级|姓名")
    Dim dr1 As DataRow = DataTables("表B").AddNew()
    dr1("班级") = v(0)
    dr1("姓名") = v(1)
    For Each dr2 As DataRow In DataTables ("学生成绩").Select("班级 = \'" & v(0) & "\' And 姓名 = \'" & v(1) & "\'")
        dr1(dr2("科目")) = dr2("分数")
    Next
Next

Dim s As String
For i As Integer = 0 To names.Count - 1
    s = s & "+isnull(" & names(i) & ",0)"
Next

DataTables("表B").DataCols.Add("总分",Gettype(Double),s.trim("+"))    \',"[语文] + [英语] + [数学] + [物理] + [化学]")
MainTable = Tables("表B")


--  作者:FOTOER
--  发布时间:2016/4/21 18:41:00
--  

哦。学习了。O(∩_∩)O谢谢。

代码比我的简洁很。

可是我的错在哪里了呢?

不应该加双引号吗?

 


--  作者:FOTOER
--  发布时间:2016/4/21 19:00:00
--  

出错提示:


图片点击可在新窗口打开查看此主题相关图片如下:转换表格错误.jpg
图片点击可在新窗口打开查看


--  作者:FOTOER
--  发布时间:2016/4/21 19:02:00
--  
嗯,好了。代码写错了。
--  作者:FOTOER
--  发布时间:2016/4/21 19:17:00
--  
科目里有“SERVER”就会出错,这个怎么弄啊?
[此贴子已经被作者于2016/4/21 19:18:27编辑过]

--  作者:FOTOER
--  发布时间:2016/4/21 19:28:00
--  

是有空格的原因


--  作者:大红袍
--  发布时间:2016/4/21 20:20:00
--  

Dim dtb As New DataTableBuilder("表B")
Dim Names As New List(Of String) 

dtb.AddDef("班级",Gettype(String),10)
dtb.AddDef("姓名",Gettype(String),10)
For Each v As String In DataTables("学生成绩").GetValues("科目", "科目 is not null")
    dtb.AddDef(v.Trim, Gettype(Double))
    Names.Add(v.Trim) 
Next
dtb.Build()
For Each v As String() In DataTables("学生成绩").GetValues("班级|姓名")
    Dim dr1 As DataRow = DataTables("表B").AddNew()
    dr1("班级") = v(0)
    dr1("姓名") = v(1)
    For Each dr2 As DataRow In DataTables ("学生成绩").Select("班级 = \'" & v(0) & "\' And 姓名 = \'" & v(1) & "\'")
        dr1(dr2("科目")) = dr2("分数")
    Next
Next

Dim s As String
For i As Integer = 0 To names.Count - 1
    s = s & "+isnull([" & names(i) & "],0)"
Next

DataTables("表B").DataCols.Add("总分",Gettype(Double),s.trim("+"))   
MainTable = Tables("表B")


--  作者:白国栋
--  发布时间:2018/8/19 22:21:00
--  

反方向转换的时候怎么弄?会了吗?我正好反向转换的问题。


--  作者:有点蓝
--  发布时间:2018/8/19 22:23:00
--  
参考:http://www.foxtable.com/webhelp/scr/2965.htm