Foxtable(狐表)用户栏目专家坐堂 → 为什么重置列不变化


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

主题:为什么重置列不变化

帅哥,在线噢!
yankunhao
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:五尾狐 帖子:1020 积分:7171 威望:0 精华:0 注册:2008/9/1 22:34:00
为什么重置列不变化  发帖心情 Post By:2010/5/20 15:22:00 [显示全部帖子]

If e.DataCol.Name = "工序编号" Then
   
    Dim dys As List(Of String) = DataTables("工序单价表").GetUniqueValues("","工序编号")
    For Each dy As String In dys
        dim n as integer = 0
        Dim drs As List(Of DataRow)
        drs = DataTables("工序单价表").Select("[工序编号] = '" & dy & "'")
        For Each dr As Datarow In drs
            n = n + 1
            dr("规格次序") =Format(n,"000")
        Next
    next
    if e.dataRow.IsNull("工序编号")
        e.dataRow("规格次序") = ""
    end if
end if
If e.DataCol.Name = "工序编号" Then
    e.DataRow("工序规格码")=e.DataRow("工序编号") + e.DataRow("规格次序")
End If

 

先定工序编号列然后重置列,但发现工序规格码只有第一行起变化,如果一行行地选工序编码就能变化。为会什么呢?


 回到顶部
帅哥,在线噢!
yankunhao
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:五尾狐 帖子:1020 积分:7171 威望:0 精华:0 注册:2008/9/1 22:34:00
  发帖心情 Post By:2010/5/20 16:01:00 [显示全部帖子]

哦,我发现规格次序就能变化工序规格码就不能变化,另工序编号及规格次序都为字符型,事件为DataColChanged

[此贴子已经被作者于2010-5-20 16:05:35编辑过]

 回到顶部
帅哥,在线噢!
yankunhao
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:五尾狐 帖子:1020 积分:7171 威望:0 精华:0 注册:2008/9/1 22:34:00
  发帖心情 Post By:2010/5/20 16:26:00 [显示全部帖子]

那如果我想在 工序编码 的列重置后,工序规格码=工序编码加上规格次序,如工序编码=8001,规格次序=01,那么工序规格码=800101 ,在DataColChanged事件中如何实现呢?
[此贴子已经被作者于2010-5-20 16:28:30编辑过]

 回到顶部
帅哥,在线噢!
yankunhao
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:五尾狐 帖子:1020 积分:7171 威望:0 精华:0 注册:2008/9/1 22:34:00
  发帖心情 Post By:2010/5/20 16:58:00 [显示全部帖子]

我在在DataColChanged事件中设置如下代码:

 

If e.DataCol.Name = "工序编号"Then '发生变化的是工序编号吗?
    '在工序编码表找出该工序
    Dim dr As DataRow
    dr = DataTables("工序编码表").Find("工序编号 = " & "'" & e.DataRow("工序编号") & "'" )
    If dr IsNot Nothing '如果找到, 则设置各列内容
        e.DataRow("工序名称")= dr("工序名称")
        e.DataRow("部门")= dr("部门")
        Dim dys As List(Of String) = DataTables("工序单价表").GetUniqueValues("","工序编号")
        For Each dy As String In dys
            dim n as integer = 0
            Dim drs As List(Of DataRow)
            drs = DataTables("工序单价表").Select("[工序编号] = '" & dy & "'")
            For Each dr1 As Datarow In drs
                n = n + 1
                dr1("规格次序") =Format(n,"000")
            Next
        next
    Else
        e.DataRow("部门") =Nothing
        e.DataRow("工序名称") = "还未有这个工序,请在工序编码表中设置"
        e.dataRow("规格次序") = ""
        e.dataRow("工序规格码")=""   
    End If
End If
If e.DataCol.Name = "规格次序" Then
    e.DataRow("工序规格码")=e.DataRow("工序编号") + e.DataRow("规格次序")
End If

 

结果是重置工序编码列时 规格次序 列能变化并数据正确,但 工序规格码 列数据却等于 工序编号,如果是新增的行或手功改动 工序编号 列时工序规格码就能如意得到!


 回到顶部
帅哥,在线噢!
yankunhao
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:五尾狐 帖子:1020 积分:7171 威望:0 精华:0 注册:2008/9/1 22:34:00
  发帖心情 Post By:2010/5/20 17:14:00 [显示全部帖子]

If e.DataCol.Name = "工序编号"Then '发生变化的是工序编号吗?
    '在工序编码表找出该工序
    Dim dr As DataRow
    dr = DataTables("工序编码表").Find("工序编号 = " & "'" & e.DataRow("工序编号") & "'" )
    If dr IsNot Nothing '如果找到, 则设置各列内容
        e.DataRow("工序名称")= dr("工序名称")
        e.DataRow("部门")= dr("部门")
        Dim dys As List(Of String) = DataTables("工序单价表").GetUniqueValues("","工序编号")
        For Each dy As String In dys
            dim n as integer = 0
            Dim drs As List(Of DataRow)
            drs = DataTables("工序单价表").Select("[工序编号] = '" & dy & "'")
            For Each dr1 As Datarow In drs
                n = n + 1
                dr1("规格次序") =Format(n,"000")
            Next
        next
    Else
        '否则清除区号和邮编两列的内容
        e.DataRow("部门") =Nothing
        e.DataRow("工序名称") = "还未有这个工序,请在工序编码表中设置"
        e.dataRow("规格次序") = ""
        e.dataRow("工序规格码")=""   
    End If
End If
If e.DataCol.Name = "规格次序" OrElse e.DataCol.Name = "工序编号" Then
    e.DataRow("工序规格码")=e.DataRow("工序编号") + e.DataRow("规格次序")
End If

 

这样还是不行,工序规格码还是工序编号,加OrElse e.DataCol.Name = "工序编号"这句只是起到当我点选工序编列然后离开,工序规格码才得到想要的数据。

[此贴子已经被作者于2010-5-20 17:16:03编辑过]

 回到顶部
帅哥,在线噢!
yankunhao
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:五尾狐 帖子:1020 积分:7171 威望:0 精华:0 注册:2008/9/1 22:34:00
  发帖心情 Post By:2010/5/20 17:42:00 [显示全部帖子]

真的不知到是什么原因了,我想可能是软件本身有问题吧。

 回到顶部
帅哥,在线噢!
yankunhao
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:五尾狐 帖子:1020 积分:7171 威望:0 精华:0 注册:2008/9/1 22:34:00
  发帖心情 Post By:2010/5/20 19:45:00 [显示全部帖子]

以下是引用czy在2010-5-20 18:34:00的发言:

这样试试。

 

If e.DataCol.Name = "工序编号"Then '发生变化的是工序编号吗?
    '在工序编码表找出该工序
    Dim dr As DataRow
    dr = DataTables("工序编码表").Find("工序编号 = " & "'" & e.DataRow("工序编号") & "'" )
    If dr IsNot Nothing '如果找到, 则设置各列内容
        e.DataRow("工序名称")= dr("工序名称")
        e.DataRow("部门")= dr("部门")
        Dim dys As List(Of String) = DataTables("工序单价表").GetUniqueValues("","工序编号")
        For Each dy As String In dys
            dim n as integer = 0
            Dim drs As List(Of DataRow)
            drs = DataTables("工序单价表").Select("[工序编号] = '" & dy & "'")
            For Each dr1 As Datarow In drs
                n = n + 1
                dr1("规格次序") =Format(n,"000")
            Next
        next

       e.DataRow("工序规格码")=e.DataRow("工序编号") + e.DataRow("规格次序")
    Else
        '否则清除区号和邮编两列的内容
        e.DataRow("部门") =Nothing
        e.DataRow("工序名称") = "还未有这个工序,请在工序编码表中设置"
        e.dataRow("规格次序") = ""
        e.dataRow("工序规格码")=""
    End If
End If
If e.DataCol.Name = "规格次序" Then
    e.DataRow("工序规格码")=e.DataRow("工序编号") + e.DataRow("规格次序")

End If

 

这个之前不是有试过了吗?我看不出有何不同。


[此贴子已经被作者于2010-5-20 19:14:22编辑过]


 回到顶部
帅哥,在线噢!
yankunhao
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:五尾狐 帖子:1020 积分:7171 威望:0 精华:0 注册:2008/9/1 22:34:00
  发帖心情 Post By:2010/5/21 7:47:00 [显示全部帖子]

楼上的,你看一下7楼我所说的代码和你所说的是不是一样,测试的结果如我在7楼所说的一样。

 回到顶部
帅哥,在线噢!
yankunhao
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:五尾狐 帖子:1020 积分:7171 威望:0 精华:0 注册:2008/9/1 22:34:00
  发帖心情 Post By:2010/5/21 9:36:00 [显示全部帖子]

我用C版的代码用商业版新建了一个项目测试就可以,但这些都是用内部数据表来的,我原来的项目是用开发版且数据表是连接外部数据数源的,所以不能上传。

[此贴子已经被作者于2010-5-21 9:37:33编辑过]

 回到顶部
帅哥,在线噢!
yankunhao
  10楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:五尾狐 帖子:1020 积分:7171 威望:0 精华:0 注册:2008/9/1 22:34:00
  发帖心情 Post By:2010/5/21 10:05:00 [显示全部帖子]

好的,我上传这个文件给大家看看。

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


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