Foxtable(狐表)用户栏目专家坐堂 → 利用内部函数新增一列,和DataRowAdded事件的先后顺序


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

主题:利用内部函数新增一列,和DataRowAdded事件的先后顺序

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


加好友 发短信
等级:幼狐 帖子:91 积分:960 威望:0 精华:0 注册:2015/12/7 14:07:00
利用内部函数新增一列,和DataRowAdded事件的先后顺序  发帖心情 Post By:2017/2/16 11:57:00 [只看该作者]

在窗口中利用内部函数在表A新增一列,新增时,【编号】=【_Identify】,代码最后加了datatables(表A).save()

 

然后在表A的表属性DataRowAdded事件中加了另一段代码,用于在表B中记录表A的数据新增记录,表A中新增一条数据,表B中便新增一条该数据的新增记录,包括【编号】、【时间】、【操作员】,代码中有一段是datatables(表B).【编号】=datatables(表A).【编号】,并做了关联,关联列为【编号】,结果发现表B的编号列都为空

 

在表A的表属性DataRowAdded中加msgbox测试了下,【编号】列是空值,不太理解为什么。DataRowAdded上的解释明明是此时datarow已经真正增加到datatable中了,而且我还特意加了save,为什么这时候读取表A的【编号】列还是空值?


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


加好友 发短信
等级:超级版主 帖子:13837 积分:69650 威望:0 精华:0 注册:2016/11/1 14:42:00
  发帖心情 Post By:2017/2/16 12:49:00 [只看该作者]

代码执行完AddNew事件,就会触发DataRowAdded事件,执行完事件,才会回来继续内部函数的代码

 

建议在事件执行 e.DataRow.Save


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


加好友 发短信
等级:幼狐 帖子:91 积分:960 威望:0 精华:0 注册:2015/12/7 14:07:00
  发帖心情 Post By:2017/2/16 14:22:00 [只看该作者]

以下是引用有点色在2017/2/16 12:49:00的发言:

代码执行完AddNew事件,就会触发DataRowAdded事件,执行完事件,才会回来继续内部函数的代码

 

建议在事件执行 e.DataRow.Save

老师,在哪里加e.DataRow.Save?

[此贴子已经被作者于2017/2/16 14:34:07编辑过]

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


加好友 发短信
等级:超级版主 帖子:110574 积分:562760 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2017/2/16 15:42:00 [只看该作者]

DataRowAdded事件

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


加好友 发短信
等级:幼狐 帖子:91 积分:960 威望:0 精华:0 注册:2015/12/7 14:07:00
  发帖心情 Post By:2017/2/27 18:54:00 [只看该作者]

老师,在DataRowAdded 事件加了e.DataRow.Save,内部函数不还是要在Added事件之后吗?那【编号】还是没能录进去啊。。

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


加好友 发短信
等级:超级版主 帖子:110574 积分:562760 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2017/2/27 20:21:00 [只看该作者]

DataRowAdded 事件和函数的代码贴出来

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


加好友 发短信
等级:幼狐 帖子:91 积分:960 威望:0 精华:0 注册:2015/12/7 14:07:00
  发帖心情 Post By:2017/2/28 8:51:00 [只看该作者]

内部函数

If Args(22) = "新增" Then '是新增
    Dim adn As Row = Tables("商户台账").addnew()
    adn("编号") = adn("_Identify")
    adn("商户名称") = Args(2)
    adn("注册地址") = Args(3)
    adn("营业执照号") = Args(4)
    adn("税务登记证") = Args(5)
    adn("商户负责人") = Args(6)
    adn("身份证号码") = Args(7)
    adn("手机号码") = Args(8)
    adn("工号") = Args(9)
    adn("入账户名") = Args(10)
    adn("绑定账号") = Args(11)
    adn("客户号") = Args(12)
    adn("借记卡限额") = Args(13)
    adn("信用卡限额") = Args(14)
    adn("商户类型") = Args(18)
    adn("客户经理") = Args(20)
    adn("部门") = Args(21)
    Dim adn1 As Row = Tables("终端台账").addnew()
    adn1("编号") = adn("编号")
    adn1("绑定电话") = Args(15)
    adn1("装机地址") = Args(17)
    adn1("使用距离") = Args(16)
    If Args(19) = True Then
        adn1("机具类型") = "固定"
    Else adn1("机具类型") = "移动"
    End If
   
Else '存量
    Dim adn1 As Row = Tables("终端台账").addnew()
    Dim fdr As DataRow = DataTables("商户台账").Find("商户编码 = '" & Args(1) & "'")
    adn1("编号") = fdr("编号")
    adn1("绑定电话") = Args(15)
    adn1("装机地址") = Args(17)
    adn1("使用距离") = Args(16)
    If Args(19) = True Then
        adn1("机具类型") = "固定"
    Else adn1("机具类型") = "移动"
    End If   
End If

DataTables("商户台账").Save()
DataTables("终端台账").Save()

Return Nothing

 

DatarowAdded

 

e.DataRow.Save
Dim r As DataRow = e.DataRow
Dim nc As DataRow = DataTables("变更台账").addnew() '增加新增记录
nc("编号") = r("编号")
nc("变更日期") = Now
nc("变更内容") = "商户录入"
nc("变更人") = User.Name


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


加好友 发短信
等级:超级版主 帖子:110574 积分:562760 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2017/2/28 9:07:00 [只看该作者]

测试没有问题。你可以加上提示框看看保存前后的值

 

DatarowAdded

 

msgbox("保存前=" & e.DataRow("_Identify"))

e.DataRow.Save

msgbox("保存后=" & e.DataRow("_Identify"))

内部函数

If Args(22) = "新增" Then '是新增
    Dim adn As Row = Tables("商户台账").addnew()

msgbox(adn("_Identify"))
    adn("编号") = adn("_Identify")

......


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


加好友 发短信
等级:超级版主 帖子:13837 积分:69650 威望:0 精华:0 注册:2016/11/1 14:42:00
  发帖心情 Post By:2017/2/28 9:16:00 [只看该作者]

 如果用 _Identify 做关联,你就必须先save一下,再使用。

 

 不过不建议直接用_Identify做关联,还不如单独做一个编号列。


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


加好友 发短信
等级:幼狐 帖子:91 积分:960 威望:0 精华:0 注册:2015/12/7 14:07:00
  发帖心情 Post By:2017/2/28 11:47:00 [只看该作者]

老师,用_Identify是没问题,因为addnew的时候就生成了主键,但是我是用单独编号列来关联的,编号列虽然等于_Identify,但是是后生成的。

主要考虑到多人同时编辑的问题所以编号设置为和_Identify一样了,单独生成编号的我也有做,但是前者更方便管理。

 

测试过了,编号列是在DatarowAdded事件触发后才生成的,所以都是空值,怎么处理比较好?


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