Foxtable(狐表)用户栏目专家坐堂 → 审核按钮报错


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

主题:审核按钮报错

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


加好友 发短信
等级:童狐 帖子:228 积分:2057 威望:0 精华:0 注册:2017/8/18 17:51:00
审核按钮报错  发帖心情 Post By:2018/7/6 4:06:00 [显示全部帖子]

窗口有一个审核按钮,当“待审核订单_Table1”表中只剩下一行,点审核按钮后报错:

.NET Framework 版本:2.0.50727.8762
Foxtable 版本:2017.12.18.1
错误所在事件:窗口,待审核订单,Button5,Click
详细错误信息:
未将对象引用设置到对象的实例.

 

 

审核按钮代码如下:

If User.Group = "经理" Then
    If Tables("待审核订单_Table1").Current IsNot Nothing Then
        Tables("待审核订单_Table1").Current("状态") = "已审核"
        Tables("待审核订单_Table1").Current("审核人") = UserName
        Tables("待审核订单_Table1").Current("审核日期") = Date.Today()
        Tables("待审核订单_Table1").Current.Save()
     End If
Else
    MessageBox.show("你无审核权限!")
End If

 

请问问题出在哪里,谢谢!

 


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


加好友 发短信
等级:童狐 帖子:228 积分:2057 威望:0 精华:0 注册:2017/8/18 17:51:00
  发帖心情 Post By:2018/7/7 4:24:00 [显示全部帖子]

“待审核订单_Table1”绑定的是销售订单,在窗口中“待审核订单_Table1”的currentChanged事件加了msgbox显示正常,在销售订单表中的datacolchanged事件和currentChanged事件没有触发。

 

“待审核订单_Table1”窗口currentChanged事件代码:

If Tables("待审核订单_Table1").Rows.Count > 0 Then
    Tables("待审核订单_Table2").Filter = "订单号 = '" &  Tables("待审核订单_Table1").Current("订单号") & "'"
End If

 

 

销售订单datacolchanged事件代码:

Select Case e.DataCol.Name
    Case "总金额","折扣","已付款"
        Dim pr As DataRow
        pr = DataTables("订单付款明细表").Find("订单号 = '" & e.DataRow("订单号") & "'")
        If pr IsNot Nothing Then
            DataTables("订单付款明细表").DataCols("订单号").RaiseDataColChanged(pr)
        End If
End Select

 

 

销售订单currentChanged事件代码:

If e.Table.Current IsNot Nothing Then
    Dim Filter As String = "订单号 = '" & e.Table.Current("订单号") & "'"
    If  DataTables("销售明细表").Find(Filter) Is Nothing Then '如果对应的订单明细没有加载过
        DataTables("销售明细表").AppendLoad(Filter) '则追载此订单的订单明细
    End If
End If


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


加好友 发短信
等级:童狐 帖子:228 积分:2057 威望:0 精华:0 注册:2017/8/18 17:51:00
  发帖心情 Post By:2018/7/7 15:08:00 [显示全部帖子]

窗口表是Normal类型,总金额和已付款是表达式列

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


加好友 发短信
等级:童狐 帖子:228 积分:2057 威望:0 精华:0 注册:2017/8/18 17:51:00
  发帖心情 Post By:2018/7/7 20:26:00 [显示全部帖子]

待审核订单_Table1,是副本表。

我在销售明细表中有针对”总金额“写触发代码:

 

If e.DataCol.Name = "数量" OrElse e.DataCol.Name = "销售单价" OrElse e.DataCol.Name = "产品型号" Then
    Dim pr As DataRow = e.DataRow.GetParentRow("销售订单") '找出对应的父行
    If pr IsNot Nothing Then
        DataTables("销售订单").DataCols("总金额").RaiseDataColChanged(pr)  '通知系统此父行的数量列发生了改变,触发DataColChanged事件
    End If
End If

 

在付款明细表有针对”已付款“写触发代码:

If e.DataCol.Name = "付款金额" Then
    Dim pr As DataRow = e.DataRow.GetParentRow("销售订单") '找出对应的父行
    If pr IsNot Nothing Then
        DataTables("销售订单").DataCols("已付款").RaiseDataColChanged(pr)  '通知系统此父行的数量列发生了改变,触发DataColChanged事件
    End If
End If

 

 


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


加好友 发短信
等级:童狐 帖子:228 积分:2057 威望:0 精华:0 注册:2017/8/18 17:51:00
  发帖心情 Post By:2018/7/9 22:30:00 [显示全部帖子]

通过子表触发父表事件

还有一个特殊情况,表达式列并非由本表的列计算得出,而是由子表数据计算得出。
例如假定订单表有个数量列,是表达式列,用于累计订单明细表的数量,其表达式为:
Sum(Child.数量)。
再假定订单表的DataColChanged事件设置了如下代码:

If e.DataCol.name = "数量" Then
  '相关计算代码 
End If

当我们在订单明细表输入数量时,订单表的数量会自动更新,但是上面的代码永远不会执行,因为数量是一个表达式列,不会触发事件。
我们需要在订单明细表的
DataColChanged事件加上代码:

If e.DataCol.name = "数量" Then
    Dim
pr As DataRow = e.DataRow.GetParentRow("订单") '找出对应的父行
    If
pr IsNot Nothing Then
        DataTables(
"订单").DataCols("数量").RaiseDataColChanged(pr'通知系统此父行的数量列发生了改变,触发DataColChanged事件
    End If
End If

这样在订单明细表输入数量,就会在订单表针对该订单的数量列触发DataColChanged事件。

 

例子中订单表的数量列也是表达式列啊


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


加好友 发短信
等级:童狐 帖子:228 积分:2057 威望:0 精华:0 注册:2017/8/18 17:51:00
  发帖心情 Post By:2018/7/11 18:28:00 [显示全部帖子]

审核按钮和取消按钮都有同样的问题

[此贴子已经被作者于2018/7/13 0:02:19编辑过]

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


加好友 发短信
等级:童狐 帖子:228 积分:2057 威望:0 精华:0 注册:2017/8/18 17:51:00
  发帖心情 Post By:2018/7/11 21:54:00 [显示全部帖子]

问题解决了,谢谢版主有点甜

 

请问什么原因要怎么写代码,谢谢!


 回到顶部