Foxtable(狐表)用户栏目专家坐堂 → 这样的效果能达到吗


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

主题:这样的效果能达到吗

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


加好友 发短信
等级:童狐 帖子:209 积分:1607 威望:0 精华:0 注册:2012/9/7 20:24:00
这样的效果能达到吗  发帖心情 Post By:2013/1/11 11:52:00 [只看该作者]

表3由表2的数据自动填充,且表3的内容会随着表2的更改而更新

表2有以下特点:

一、相同档案编号有不同或相同的颜色

二、档案编号相同而颜色不同的,序号、尺寸也不相同;档案编号相同且颜色相同的,尺寸和机型是一样的,序号开头是一样的,就是后面的字母不一样;某个颜色如果序号为空,那么尺寸和机型也都是空的

三、表二的档案编号列内容一旦输入就不能更改,除非把行删除掉。其余列的内容可以更改,更改后表3要能更新

表3有以下特点:

一、列是固定的,只有21个列,且第一个列名为档案编号,后面分别是:顺序1,顺序2......顺序20

二、表2的每个档案编号,在表3都要生成4行内容,分别对应的是表2的颜色、序号、尺寸和机型


图片点击可在新窗口打开查看此主题相关图片如下:2.jpg
图片点击可在新窗口打开查看

图片点击可在新窗口打开查看此主题相关图片如下:3.jpg
图片点击可在新窗口打开查看

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

[此贴子已经被作者于2013-1-11 13:29:59编辑过]

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


加好友 发短信
等级:狐神 帖子:6708 积分:34304 威望:0 精华:11 注册:2012/8/18 23:10:00
  发帖心情 Post By:2013/1/11 11:57:00 [只看该作者]

 呃,很明细可以。没有做不到的。

 上传你的数据表吧。

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


加好友 发短信
等级:童狐 帖子:209 积分:1607 威望:0 精华:0 注册:2012/9/7 20:24:00
  发帖心情 Post By:2013/1/11 13:36:00 [只看该作者]

刚开始网络不行,忘了上传项目了,我已经重新编辑了,将项目上传了

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


加好友 发短信
等级:狐神 帖子:6708 积分:34304 威望:0 精华:11 注册:2012/8/18 23:10:00
  发帖心情 Post By: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
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:童狐 帖子:209 积分:1607 威望:0 精华:0 注册:2012/9/7 20:24:00
  发帖心情 Post By:2013/1/11 15:16:00 [只看该作者]

谢谢了,我试一下


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


加好友 发短信
等级:童狐 帖子:209 积分:1607 威望:0 精华:0 注册:2012/9/7 20:24:00
  发帖心情 Post By:2013/1/12 10:23:00 [只看该作者]

我把上面的代码放在了表2的DataColChanged事件中

发现了几个问题:

1.当表2中相同档案编号的颜色只有一种颜色,且这种颜色有两个或两个以上序号,表3生成有错误,见图:


图片点击可在新窗口打开查看此主题相关图片如下:011.jpg
图片点击可在新窗口打开查看

图片点击可在新窗口打开查看此主题相关图片如下:012.jpg
图片点击可在新窗口打开查看
2.我修改表2中的任意内容(档案编号不能修改),表3的内容都是全部重新删掉再重新生成?表3能不能只是删掉相关档案编号的行?

3.我想在表3再增加一行,是用来统计序号行内序号的数量,如果序号为空,那它也为空,改怎样写代码?如图:


图片点击可在新窗口打开查看此主题相关图片如下:014.jpg
图片点击可在新窗口打开查看
[此贴子已经被作者于2013-1-12 10:23:56编辑过]

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


加好友 发短信
等级:狐神 帖子:6708 积分:34304 威望:0 精华:11 注册:2012/8/18 23:10:00
  发帖心情 Post By: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
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:狐神 帖子:6708 积分:34304 威望:0 精华:11 注册:2012/8/18 23:10:00
  发帖心情 Post By: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
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:童狐 帖子:209 积分:1607 威望:0 精华:0 注册:2012/9/7 20:24:00
  发帖心情 Post By:2013/1/12 11:53:00 [只看该作者]

谢谢了,我再试试

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


加好友 发短信
等级:童狐 帖子:209 积分:1607 威望:0 精华:0 注册:2012/9/7 20:24:00
  发帖心情 Post By:2013/1/12 12:00:00 [只看该作者]

这个问题是怎么出现的?就是我刚才说的第一点问题,现在还是这种情况


图片点击可在新窗口打开查看此主题相关图片如下:011.jpg
图片点击可在新窗口打开查看

图片点击可在新窗口打开查看此主题相关图片如下:012.jpg
图片点击可在新窗口打开查看

[此贴子已经被作者于2013-1-12 12:00:46编辑过]

 回到顶部
总数 12 1 2 下一页