以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  不能通过已删除的行访问该行的信息  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=179898)

--  作者:HANZHIGANG
--  发布时间:2022/9/16 13:33:00
--  不能通过已删除的行访问该行的信息
在窗口SQLTable表的CLICK事件代码如下,出现标题的错误提示

If e.Col.name = "删除" Then
    If Tables("自营车辆结算").Current("结算员") = user.Name Then
        If Tables("自营车辆结算").Current("结算完毕") = False Then         
            If e.Row("行驶状态") = "空驶" Then
                Dim Result As DialogResult
                Result = MessageBox.Show("确定删除此条数据?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question)
                If Result = DialogResult.Yes Then
                    e.Row.Delete()
                Else
                    e.Cancel = True
                End If
            End If
        Else
            MessageBox.Show("已结算完毕的结算单无法删除结算明细!")
        End If
    Else
        MessageBox.Show("非原操作员无权删除结算明细!")
    End If
End If

--  作者:有点蓝
--  发布时间:2022/9/16 13:36:00
--  
还有其它什么表事件?
--  作者:HANZHIGANG
--  发布时间:2022/9/16 13:46:00
--  

DataColChanged事件:

S e l e c t Case e.DataCol.Name 
    Case "油费", "通行费", "罚款", "交车费", "停车费", "其他费用"
        e.DataRow("费用合计") = e.DataRow("油费") + e.DataRow("通行费") + e.DataRow("罚款") + e.DataRow("交车费") + e.DataRow("停车费") + e.DataRow("其他费用")       
        
        Dim val As Double = Tables("自营车辆结算管理_Table1").Compute("Sum(费用合计)", "调度单号 = \'" & e.DataRow("调度单号") & "\'")
        Dim val1 As Double = Tables("自营车辆结算管理_Table1").Compute("Sum(台数)", "调度单号 = \'" & e.DataRow("调度单号") & "\'")
        
        Dim cmd As New SQLCommand
        cmd.C   
        cmd.CommandText = "UP DATE {调度管理} SET [下游金额] =" & val & " WH ERE [调度单号] = \'" & e.DataRow("调度单号") & "\'"
        cmd.ExecuteNonQuery()
        
        Dim cmd6 As New SQLCommand
        cmd6.C
        cmd6.CommandText = "UP DATE {调度管理} SET [下游余额] = iif([下游金额] is null,0,[下游金额]) + iif([下游调整] is null,0,[下游调整]) - iif([下游考核] is null,0,[下游考核]) + iif([预借合计] is null,0,[预借合计]) W H E R E [调度单号] = \'" & e.DataRow("调度单号") & "\'"
        cmd6.ExecuteNonQuery()       
        
        If val1 > 0 Then
            Dim cmd2 As New SQLCommand
            cmd2.C
            cmd2.CommandText = "UP DATE {运单管理} SET 下游单价 = " & val / val1 & " WH ERE [调度单号] = \'" & e.DataRow("调度单号") & "\'"
            cmd2.ExecuteNonQuery()
            
            Dim cmd3 As New SQLCommand
            cmd3.C
            cmd3.CommandText = "UP DATE {运单管理} SET 下游运费金额 = 下游台数*下游单价 WH ERE [调度单号] = \'" & e.DataRow("调度单号") & "\'"
            cmd3.ExecuteNonQuery()
            
            Dim cmd4 As New SQLCommand
            cmd4.C
            cmd4.CommandText = "UP DATE {运单管理} SET 下游运费余额 = iif([下游运费金额] is null,0,[下游运费金额]) + iif([下游调整金额] is null,0,[下游调整金额]) - iif([下游考核金额] is null,0,[下游考核金额]) - iif([下游借款金额] is null,0,[下游借款金额]) WH ERE [调度单号] = \'" & e.DataRow("调度单号") & "\'"
            cmd4.ExecuteNonQuery()        
        End If
        
        Dim cmd5 As New SQLCommand
        cmd5.C
        cmd5.CommandText = "UP DATE {运单管理} SET 下游结算 = true, 结算单号 = \'" & e.DataRow("结算单号") & "\', 下游结算日期 = \'" & Tables("自营车辆结算").Current ("结算日期") & "\', 下游结算员= \'" & Tables("自营车辆结算").Current ("结算员") & "\' WH ERE [调度单号] = \'" & e.DataRow("调度单号") & "\'"
        cmd5.ExecuteNonQuery()
        
End Select

DrawCell事件:

If e.Col.name = "删除" Then
    e.StartDraw
    If e.MouseHover = False  Then\'如果鼠标不在此单元格
        e.Graphics.DrawImage(D2, e.x + 10, e.y + 3) \'绘制第一个图标
    Else \'如果鼠标在此单元格
        e.Graphics.DrawImage(D1, e.x + 11, e.y + 2) \'绘制第二个图标
    End If
    e.EndDraw
End If

--  作者:HANZHIGANG
--  发布时间:2022/9/16 13:46:00
--  
还有以上两个事件
--  作者:有点蓝
--  发布时间:2022/9/16 14:04:00
--  
1楼代码是放在表格的click还是DoubleClick事件?

如果是参考这里http://www.foxtable.com/webhelp/topics/2387.htm的用法,加上【4、将表的PrepareEdit事件加入以下代码

--  作者:HANZHIGANG
--  发布时间:2022/9/16 14:23:00
--  
click事件中加已加入
If e.Col.Name = "删除" Then
   e.Cancel = 
True

End
 If
仍是提示以上错误

--  作者:HANZHIGANG
--  发布时间:2022/9/16 14:34:00
--  
老师,已查出原因。多谢