以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 这样的效果能达到吗 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=27823) |
||||
-- 作者:zcw728909 -- 发布时间:2013/1/11 11:52:00 -- 这样的效果能达到吗 表3由表2的数据自动填充,且表3的内容会随着表2的更改而更新 表2有以下特点: 一、相同档案编号有不同或相同的颜色 二、档案编号相同而颜色不同的,序号、尺寸也不相同;档案编号相同且颜色相同的,尺寸和机型是一样的,序号开头是一样的,就是后面的字母不一样;某个颜色如果序号为空,那么尺寸和机型也都是空的 三、表二的档案编号列内容一旦输入就不能更改,除非把行删除掉。其余列的内容可以更改,更改后表3要能更新 表3有以下特点: 一、列是固定的,只有21个列,且第一个列名为档案编号,后面分别是:顺序1,顺序2......顺序20 二、表2的每个档案编号,在表3都要生成4行内容,分别对应的是表2的颜色、序号、尺寸和机型
[此贴子已经被作者于2013-1-11 13:29:59编辑过]
|
||||
-- 作者:lin_hailun -- 发布时间:2013/1/11 11:57:00 -- 呃,很明细可以。没有做不到的。 上传你的数据表吧。 |
||||
-- 作者:zcw728909 -- 发布时间:2013/1/11 13:36:00 -- 刚开始网络不行,忘了上传项目了,我已经重新编辑了,将项目上传了 |
||||
-- 作者:lin_hailun -- 发布时间:2013/1/11 14:30:00 -- 把这段代码复制到命令窗口执行一下就行了。 Dim dt_source As DataTable = DataTables("表2") Dim dt_target As DataTable = DataTables("表3") dt_target.DataRows.Clear For Each bh As String In dt_source.GetUniqueValues("", "档案编号") Dim drs(3) As DataRow drs(0) = dt_target.AddNew drs(1) = dt_target.AddNew drs(2) = dt_target.AddNew drs(3) = dt_target.AddNew For Each r As DataRow In drs r("档案编号") = bh Next Dim count As Integer = 1 Dim xh As New Dictionary(Of String, Integer) For Each dr As DataRow In dt_source.Select("档案编号 = \'" & bh & "\'") drs(0)("顺序" & count) = dr("颜色") drs(2)("顺序" & count) = dr("尺寸") drs(3)("顺序" & count) = dr("机型") If xh.ContainsKey(dr("颜色")) Then drs(1)("顺序" & xh(dr("颜色"))) &= ";" & dr("序号") Else drs(1)("顺序" & count) = dr("序号") xh.Add(dr("颜色"), count) count += 1 End If Next Next [此贴子已经被作者于2013-1-11 15:02:03编辑过]
|
||||
-- 作者:zcw728909 -- 发布时间:2013/1/11 15:16:00 -- 谢谢了,我试一下 |
||||
-- 作者:zcw728909 -- 发布时间:2013/1/12 10:23:00 -- 我把上面的代码放在了表2的DataColChanged事件中 发现了几个问题: 1.当表2中相同档案编号的颜色只有一种颜色,且这种颜色有两个或两个以上序号,表3生成有错误,见图:
3.我想在表3再增加一行,是用来统计序号行内序号的数量,如果序号为空,那它也为空,改怎样写代码?如图: 此主题相关图片如下:014.jpg [此贴子已经被作者于2013-1-12 10:23:56编辑过]
|
||||
-- 作者:lin_hailun -- 发布时间:2013/1/12 10:57:00 -- 你做一个按钮吧。 Dim dt_source As DataTable = DataTables("表2") Dim dt_target As DataTable = DataTables("表3") dt_target.DataRows.Clear For Each bh As String In dt_source.GetUniqueValues("", "档案编号") Dim drs(3) As DataRow drs(0) = dt_target.AddNew drs(1) = dt_target.AddNew drs(2) = dt_target.AddNew drs(3) = dt_target.AddNew For Each r As DataRow In drs r("档案编号") = bh Next Dim count As Integer = 1 Dim xh As New Dictionary(Of String, Integer) For Each dr As DataRow In dt_source.Select("档案编号 = \'" & bh & "\'") drs(0)("顺序" & count) = dr("颜色") drs(2)("顺序" & count) = dr("尺寸") drs(3)("顺序" & count) = dr("机型") If xh.ContainsKey(dr("颜色")) Then drs(1)("顺序" & xh(dr("颜色"))) &= ";" & dr("序号") Else drs(1)("顺序" & count) = dr("序号") xh.Add(dr("颜色"), count) count += 1 End If Next Dim ndr As DataRow = dt_target.AddNew ndr("档案编号") = bh For i As Integer = 1 To 20 If drs(1)("顺序" & i) > "" Then ndr("顺序" & i) = drs(1)("顺序" & i).split(";").Length End If Next Next |
||||
-- 作者:lin_hailun -- 发布时间:2013/1/12 11:02:00 -- 表事件里的代码 If e.DataCol.Name <> "档案编号" Then Dim dt_source As DataTable = e.DataTable Dim dt_target As DataTable = DataTables("表3") Dim bh As String = e.DataRow("档案编号") dt_target.DeleteFor("档案编号 = \'" & bh & "\'") Dim drs(3) As DataRow drs(0) = dt_target.AddNew drs(1) = dt_target.AddNew drs(2) = dt_target.AddNew drs(3) = dt_target.AddNew For Each r As DataRow In drs r("档案编号") = bh Next Dim count As Integer = 1 Dim xh As New Dictionary(Of String, Integer) For Each dr As DataRow In dt_source.Select("档案编号 = \'" & bh & "\'") drs(0)("顺序" & count) = dr("颜色") drs(2)("顺序" & count) = dr("尺寸") drs(3)("顺序" & count) = dr("机型") If xh.ContainsKey(dr("颜色")) Then drs(1)("顺序" & xh(dr("颜色"))) &= ";" & dr("序号") Else drs(1)("顺序" & count) = dr("序号") xh.Add(dr("颜色"), count) count += 1 End If Next Dim ndr As DataRow = dt_target.AddNew ndr("档案编号") = bh For i As Integer = 1 To 20 If drs(1)("顺序" & i) > "" Then ndr("顺序" & i) = drs(1)("顺序" & i).split(";").Length End If Next End If |
||||
-- 作者:zcw728909 -- 发布时间:2013/1/12 11:53:00 -- 谢谢了,我再试试 |
||||
-- 作者:zcw728909 -- 发布时间:2013/1/12 12:00:00 -- 这个问题是怎么出现的?就是我刚才说的第一点问题,现在还是这种情况
[此贴子已经被作者于2013-1-12 12:00:46编辑过]
|