Foxtable(狐表)用户栏目专家坐堂 → [求助]在表A格式化录入值同时自动在表B新建行,为何新建2行


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

主题:[求助]在表A格式化录入值同时自动在表B新建行,为何新建2行

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


加好友 发短信
等级:幼狐 帖子:104 积分:861 威望:0 精华:0 注册:2013/7/16 16:46:00
[求助]在表A格式化录入值同时自动在表B新建行,为何新建2行  发帖心情 Post By:2013/8/24 1:12:00 [只看该作者]

现在的代码如下
If e.DataCol.Name = "编号" Then
        e.DataRow("编号")=format(Val(e.newValue),"000000") ' 格式化编号
        Dim dn As DataRow  = DataTables("表B").AddNew
    End If
End If

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


加好友 发短信
等级:狐神 帖子:4752 积分:34568 威望:0 精华:0 注册:2008/8/31 22:44:00
  发帖心情 Post By:2013/8/24 8:03:00 [只看该作者]

你的代码触动了两次DataRowLockedChanged事件
当然会生成两条记录的

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


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2013/8/24 8:36:00 [只看该作者]

If e.DataCol.Name = "编号" Then
    If e.newvalue > "" AndAlso e.newvalue.length <> 6 Then
        e.DataRow("编号")=format(Val(e.newValue),"000000") ' 格式化编号
        Dim dn As DataRow  = DataTables("表B").AddNew
    End If
End If

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


加好友 发短信
等级:幼狐 帖子:104 积分:861 威望:0 精华:0 注册:2013/7/16 16:46:00
  发帖心情 Post By:2013/8/25 10:50:00 [只看该作者]

如果输入6位那不就不执行添加行了吗
[此贴子已经被作者于2013-8-25 10:50:26编辑过]

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


加好友 发短信
等级:狐神 帖子:4752 积分:34568 威望:0 精华:0 注册:2008/8/31 22:44:00
  发帖心情 Post By:2013/8/25 12:10:00 [只看该作者]

是的
因为你格式化后是6位

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


加好友 发短信
等级:幼狐 帖子:104 积分:861 威望:0 精华:0 注册:2013/7/16 16:46:00
  发帖心情 Post By:2013/8/25 13:29:00 [只看该作者]

那怎么修改能实现了


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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2013/8/25 21:37:00 [只看该作者]

 楼主应该是写在datacolchanged事件的代码吧。你触发了两次,你应该这样改。

If e.DataCol.Name = "编号" Then
    e.newvalue = format(Val(e.newValue),"000000") ' 格式化编号
    Dim dn As DataRow  = DataTables("表B").AddNew
End If

 回到顶部