Rss & SiteMap

Foxtable(狐表) http://www.foxtable.com

新一代数据库软件,完美融合Access、Foxpro、Excel、vb.net之优势,人人都能掌握的快速软件开发工具!
共7 条记录, 每页显示 10 条, 页签: [1]
[浏览完整版]

标题:表的转换

1楼
实话实说 发表于:2010/11/20 15:08:00

我想将EXCEL表转换成表B的样式,请高手指点

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目3.table

2楼
mr725 发表于:2010/11/20 20:13:00
'''
Dim dtb As New DataTableBuilder("Excel转置")
dtb.AddDef("型号", Gettype(String),15)
dtb.AddDef("规格", Gettype(String),15)
dtb.AddDef("材料", Gettype(String))
dtb.AddDef("用量", Gettype(Double))
dtb.Build()
MainTable= Tables("Excel转置")
For i As Integer = 0 To Tables("EXCEL表").count -1
    If Tables("EXCEL表").rows(i)("型号") > ""   '用IsNull好些
        For ii As Integer = 2 To Tables("EXCEL表").cols.count -1
            Dim lm As String = Tables("EXCEL表").cols(ii).name
            If Tables("EXCEL表").rows(i).IsNull(lm) = False
                Tables("EXCEL转置").addnew
                Dim r As Row = Tables("EXCEL转置").current
                r("型号") = Tables("EXCEL表").rows(i)("型号")
                r("规格") = Tables("EXCEL表").rows(i)("规格")
                r("材料") = lm
                r("用量") = Tables("EXCEL表").rows(i)(lm)
            End If
        Next
    End If
Next
3楼
实话实说 发表于:2010/12/2 11:24:00

谢谢mr725,代码可用。现在想改进一下,因为数据量大,每次转换时只转换新加入的数据,已有的数据不变。

4楼
czy 发表于:2010/12/2 11:49:00
怎么区分新加的数据?是型号不同吗?
5楼
czy 发表于:2010/12/2 16:08:00

用这种办法行不行?

 

 

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目19.table

6楼
czy 发表于:2010/12/2 16:12:00

如果每次转换的数据量大,将窗口按钮代码改成这样好一点。

 

Dim drs As List(Of DataRow) = DataTables("EXCEL表").Select("[型号] Is Not Null And [sys_标记] = False")
If drs.Count = 0 Then
    MessageBox.Show("没有新数据!")
    Return
Else
    Tables("窗口1_Table1").StopRedraw
    For Each dr As DataRow In drs
        For Each dc As DataCol In DataTables("EXCEL表").DataCols
            Select Case dc.Name
                Case "型号","规格","sys_标记"
                Case Else
                    If dr.IsNull(dc.Name) = False Then
                        Dim r As Row = Tables("表B").Addnew
                        r("型号") = dr("型号")
                        r("规格") = dr("规格")
                        r("材料") = dc.Name
                        r("用量") = dr(dc.Name)
                    End If
            End Select
        Next
        dr("sys_标记") = True
    Next
    Tables("窗口1_Table1").ResumeRedraw
End If

[此贴子已经被作者于2010-12-2 16:14:26编辑过]
7楼
实话实说 发表于:2010/12/3 9:14:00
谢谢CZY,测试通过
共7 条记录, 每页显示 10 条, 页签: [1]

Copyright © 2000 - 2018 foxtable.com Tel: 4000-810-820 粤ICP备11091905号

Powered By Dvbbs Version 8.3.0
Processed in .02734 s, 4 queries.