以文本方式查看主题

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

--  作者:yyzlxc
--  发布时间:2013/7/31 13:27:00
--  [求助]关于数据填充的问题(已解决)
按组别填充的代码如下:

DataTables("表B").DataRows.Clear  \'清除表B
Dim zb As String() = {"1","2","3","4","5"}
For j As Integer = 0 To zb.length -1
    Dim iList As List(of DataRow)= DataTables("表A").Select("组别 = \'" & zb(j) & "\'")
    If IList IsNot Nothing Then
        For i As Integer = 0 To iList.Count - 1
            Dim dr As DataRow
            If DataTables("表B").DataRows.Count > i Then
                dr = DataTables("表B").DataRows(i)
            Else
                dr = DataTables("表B").AddNew
            End If
            dr("组别_" & zb(j)) = IList(i)("姓名")
        Next
    End If
Next
MainTable= Tables("表B")
Tables("表B").AutoSizeCols()
DataTables("表B").Save()


问题1、如果用GetUniqueValues来获取“表A”组别列的不重复值,以上代码应如何修改?

问题2、填充表C,在填充表B的基础上增加一个条件,将姓名填充在对应组别和工位的单元格,代码应该如何写,请各位老师指教,谢谢!!


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


[此贴子已经被作者于2013-7-31 14:50:43编辑过]

--  作者:Bin
--  发布时间:2013/7/31 14:35:00
--  
第二个需求真够麻烦的,因为不一定是55对应的情况!
总算给你写好了


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



--  作者:yyzlxc
--  发布时间:2013/7/31 14:50:00
--  
谢谢Bin老师的指教,真不好意思,给老师添麻烦了,所给的代码还需要再消化一下,再次感谢Bin老师的热心帮助!!
--  作者:lsy
--  发布时间:2013/7/31 15:15:00
--  

凑个热闹。

 

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:不重复填充.table


--  作者:狐狸爸爸
--  发布时间:2013/7/31 15:24:00
--  
图片点击可在新窗口打开查看
--  作者:y2287958
--  发布时间:2013/7/31 15:41:00
--  

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


俺喜欢用filler,简单好读。

按钮一代码:

DataTables("表B").DataRows.Clear
Dim ss As List(of String) = DataTables("表A").GetUniqueValues("","组别")
Dim f As New Filler
For Each s As String In ss
    f.SourceTable = DataTables("表A")
    f.SourceCols = "姓名"
    f.DataTable = DataTables("表B")
    f.DataCols = "组别_" & s
    f.Filter = "组别=\'" & s & "\'"
    f.Append = False
    f.Fill()
Next
MainTable = Tables("表B")

 

按钮二代码:

DataTables("表C").DataRows.Clear

Dim f As New Filler
f.SourceTable = DataTables("表A")
f.SourceCols = "工位"
f.DataTable = DataTables("表C")
f.DataCols = "工位"
f.Fill()

DataTables("表C").DataCols("工位").RaiseDataColChanged

MainTable = Tables("表C")

 

 

表C“DataColChanged”

If e.DataCol.Name = "工位"
    Dim ss As List(of String) = DataTables("表A").GetUniqueValues("","组别")
    For Each s As String In ss
        Dim dr As DataRow = DataTables("表A").Find("工位=\'" & e.DataRow("工位") & "\' and 组别=\'" & s & "\'")
        If dr IsNot Nothing
            If e.DataRow.IsNull("工位")
                e.DataRow("组别_" & s) = Nothing
            Else
                e.DataRow("组别_" & s) = dr("姓名")
            End If
        End If
    Next
End If

[此贴子已经被作者于2013-7-31 15:42:30编辑过]

--  作者:lsy
--  发布时间:2013/7/31 15:56:00
--  
以下是引用y2287958在2013-7-31 15:41:00的发言:

 下载信息  [文件大小:75.2 KB  下载次数:0]
图片点击可在新窗口打开查看点击浏览该文件:管理项目1 (1).zip


俺喜欢用filler,简单好读。

不错,一种很好的选项。