以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]在表A格式化录入值同时自动在表B新建行,为何新建2行  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=39424)

--  作者:wxfjamdc
--  发布时间:2013/8/24 1:12:00
--  [求助]在表A格式化录入值同时自动在表B新建行,为何新建2行
现在的代码如下
If e.DataCol.Name = "编号" Then
        e.DataRow("编号")=format(Val(e.newValue),"000000") \' 格式化编号
        Dim dn As DataRow  = DataTables("表B").AddNew
    End If
End If

--  作者:y2287958
--  发布时间:2013/8/24 8:03:00
--  
你的代码触动了两次DataRowLockedChanged事件
当然会生成两条记录的

--  作者:狐狸爸爸
--  发布时间: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
--  发布时间:2013/8/25 10:50:00
--  
如果输入6位那不就不执行添加行了吗
[此贴子已经被作者于2013-8-25 10:50:26编辑过]

--  作者:y2287958
--  发布时间:2013/8/25 12:10:00
--  
是的
因为你格式化后是6位

--  作者:wxfjamdc
--  发布时间:2013/8/25 13:29:00
--  

那怎么修改能实现了


--  作者:有点甜
--  发布时间: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