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


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

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

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


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2010/5/20 15:35:00 [显示全部帖子]

你用的是菜单中的重置按钮吗,按道里不会这样的,因为菜单的重置是针对所有行的。

 

另外你的代码,为啥两个 If e.DataCol.Name = "工序编号" Then ?

 

通常应该这样:

 

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
    e.DataRow("工序规格码")=e.DataRow("工序编号") + e.DataRow("规格次序")
End If

当然这不影响计算的,只是不规范。


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


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2010/5/20 16:14:00 [显示全部帖子]

规格次序 和 工序规格码,前者是所有行都算了一次,后者则只是触发事件的行算了一次 。

代码是死的,你让他干啥就干啥,不会多干一点,也不会少干一点,你自己慢慢分析吧。

实在搞不定,就做个简单的例子上来,而且要具体第描述问题:出于什么目的? 在什么事件写了什么代码? 希望的情况应该怎样? 现在的情况却是怎样?

 

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

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


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2010/5/20 16:29: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
[此贴子已经被作者于2010-5-20 16:29:21编辑过]

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


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2010/5/20 17:02:00 [显示全部帖子]

If e.DataCol.Name = "规格次序" Then
    e.DataRow("工序规格码")=e.DataRow("工序编号") + e.DataRow("规格次序")
End If

 

改为:

 

If e.DataCol.Name = "规格次序" Orlese e.DataCol.Name = "工序编号" Then
    e.DataRow("工序规格码")=e.DataRow("工序编号") + e.DataRow("规格次序")
End If

 


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


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2010/5/20 17:15:00 [显示全部帖子]

从理论来说,这是不可能的事情。

我没有别的办法了,我投降,你自己慢慢研究,搞不定就做一个简单的例子测试,我们有办法继续蒙下去了

 

图片点击可在新窗口打开查看

 

 

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

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


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2010/5/21 8:34:00 [显示全部帖子]

以下是引用yankunhao在2010-5-21 7:47:00的发言:
楼上的,你看一下7楼我所说的代码和你所说的是不是一样,测试的结果如我在7楼所说的一样。

 

1、C版的代码肯定和你不同,你看仔细一点。

2、不要轻易怀疑是软件的问题,重置列是基本功能,每个人都要使用的,搞不定的问题就应该做个简单的例子上来,而不是让大家瞎蒙。


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


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2010/5/21 9:39:00 [显示全部帖子]

内外无差别的。

用重定向,可以将外部表转为内部表,不过先要备份一下。


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


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2010/5/21 10:19:00 [显示全部帖子]

将“工序规格码”列的最大字符数甚至为20,然后重置列,你就明白是怎么回事了
[此贴子已经被作者于2010-5-21 10:18:49编辑过]

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


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2010/5/21 11:02:00 [显示全部帖子]

如果你将“工序规格码”的长度设置为20个字符了,重置列会看到这样的结果:

 


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

 

你的工序规格码最大允许10个字符,也就是最多接受10个字符的内容,你原来输入的工序编号不是“80001”,你输入的是“80001     ”, 加上规格次序“001”,就是“80001     001”,但是工序规格码最大长度是10个字符看,所以只接收了前10个字符,所以结果就成了“80001     ”

 

 


[此贴子已经被作者于2010-5-21 11:07:06编辑过]

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


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2010/5/21 11:16:00 [显示全部帖子]

1、为啥多出空格,这要问你自己了。

2、空格当然是看不见的,要细心才行,查看复制到写字板好一些。 

3、批量删除空格:

 

   For Each r As Row in Tables("xxx").Rows

      r("yyy") = R("yyy").Trim

   Next

 

这些属于编程基础了,你需要好好看看帮助了

[此贴子已经被作者于2010-5-21 11:19:08编辑过]

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