以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- [求助]DataRowAdded中的e.DataRow (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=183629) |
-- 作者:cherryjing -- 发布时间:2022/11/9 22:46:00 -- [求助]DataRowAdded中的e.DataRow 为了建立操作日志,在全局表的DataRowAdded事件中添加代码: Dim strPrj As String Dim dr As DataRow Dim strInfo As String Dim blValible As Boolean = False Select Case e.DataTable.Name Case "项目表" strInfo = "增加了一个工程:" & e.DataRow("项目简称") blValible = True Case "合同表" strInfo = "增加了一个合同:" & e.DataRow("合同编号") blValible = True Case "价格表" strInfo = "增加了一个合同明细:" & e.DataRow("合同编号") & e.DataRow("名称") blValible = True Case "设备材料表" strInfo = e.DataRow("项目编号") & "的" & "设备材料表" & "增加了一件材料" blValible = True End Select If blValible Then Dim r As Row = Tables("日志表").AddNew() r("时间") = Date.Now() r("操作者") = _UserName r("操作类别") = "增加记录" r("操作对象") = e.DataTable.Name r("操作描述") = strInfo End If 结果在日志表中发现e.DataRow("项目简称")总为空值,但运行结果,该列已被正确赋值
|
-- 作者:有点蓝 -- 发布时间:2022/11/10 8:57:00 -- 新增行肯定都是空行,没有的数据呀,获取数据应该到datacolchanged事件处理 |
-- 作者:cherryjing -- 发布时间:2022/11/10 17:07:00 -- 那么我这段创建操作日志的代码应该放在DataRowAdded中,还是datacolchanged中呢?抑或是AfterSaveDataRow? [此贴子已经被作者于2022/11/10 17:09:50编辑过]
|
-- 作者:有点蓝 -- 发布时间:2022/11/10 17:19:00 -- 新增行到BeforeSaveDataRow处理,数据更改到datacolchanged事件处理 |
-- 作者:cherryjing -- 发布时间:2022/11/10 17:57:00 -- 我在全局表的AfterSaveDataRow中输入代码: Dim strPrj As String Dim dr As DataRow Dim strOp As String, strInfo As String Dim blValible As Boolean = False \'如果保存失败,给出提示后退出 If e.Success = False Then MessageBox.Show(e.DataTable.Name & "保存失败!") Return End If Select Case e.StatementType Case 0\'新增 strOp = "增加" Case 1\'修改 strOp = "修改" Case 2\'删除 strOp = "删除" End Select Select Case e.DataTable.Name Case "合同表" strInfo = strOp & "合同:" & e.DataRow("合同编号") blValible = True Case "价格表" strInfo = strOp & "合同明细:" & e.DataRow("合同编号") & e.DataRow("名称") blValible = True Case "设备材料表" strInfo = strOp & "设备材料:" & e.DataRow("名称") & "在项目" & e.DataRow("项目编号") & "中" blValible = True End Select If blValible Then Dim r As Row = Tables("日志表").AddNew() r("时间") = Date.Now() r("操作者") = _UserName r("操作类别") = strOp & "记录" r("操作对象") = e.DataTable.Name r("操作描述") = strInfo End If 发现增加和修改都能正常执行,唯有删除时没有进入本事件, 查了增加、编辑、及删除的代码,增加和编辑中都调用了 .current.Save(),唯独删除代码仅调用了.current.delete(), 没有 .current.Save(),但是即使增加这一句进去发现也没有触发AfterSaveDataRow事件。 在帮助文件中,AfterSaveDataRow事件中的e参数StatementType:整数型,表示数据行在保存前的状态,0表示新增行,1表示修改行,2表示删除行。 请问如果是删除行,又怎么保存该DataRow?或者说删除行后要怎么触发AfterSaveDataRow事件?
|
-- 作者:有点蓝 -- 发布时间:2022/11/10 19:59:00 -- 删除到DataRowDeleting事件处理 |
-- 作者:cherryjing -- 发布时间:2022/11/10 20:49:00 -- 什么时候AfterSaveDataRow事件中的e参数StatementType的值会等于2呢? |
-- 作者:有点蓝 -- 发布时间:2022/11/10 20:57:00 -- 已经保存过的行,删除后,在保存时触发事件,e参数StatementType的值会等于2。 新增的行,没有保存过的,删除后不会触发事件
|