以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  安条件删除报错  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=171212)

--  作者:采菊东篱下
--  发布时间:2021/8/22 14:03:00
--  安条件删除报错

图片点击可在新窗口打开查看此主题相关图片如下:20210822.png
图片点击可在新窗口打开查看
后台的表名取当前集合的表名,如果后台的表科目名称列与窗口里当前行的
科目名称相符,且未审核,同时财务数据源表的科目名称列不存在等于窗口中当前行科目名称的行,允许删除行,否则取消操作,我这样写报错。
Select Case e.StripItem.Name
        Case "删除行"
            Dim dt As DataRow = DataTables(vars("a")).Find("[科目名称] = \'" & CurrentTable.Current("科目名称") & "\' And ([已审核] = False Or [已审核] Is null)")
            Dim dr As DataRow = DataTables("财务数据源").SQLFind("[科目名称] = \'" & CurrentTable.Current("科目名称") & "\'")
            If dt IsNot Nothing And dr Is Nothing Then
                Dim Result As DialogResult
                Result = MessageBox.Show("是否确定要删除此单?","提示",MessageBoxButtons.YesNo, MessageBoxIcon.Question)
                If Result = DialogResult.Yes Then
                    CurrentTable.Current.Delete()
                    DataTables(vars("a")).Save()
                Else
                    Return
                End If
            Else
                MessageBox.show("该科目含已审核初始数据,或账套启用后已被引用,不能删除.")
            End If
    End Select
[此贴子已经被作者于2021/8/22 14:04:12编辑过]

--  作者:采菊东篱下
--  发布时间:2021/8/22 17:17:00
--  
改为这样可以删除了:
If dt Is Nothing And dr Is Nothing Then
为什么是:
dt Is Nothing 不是IsNot呢?

--  作者:有点蓝
--  发布时间:2021/8/22 20:42:00
--  
vars("a")是哪个表?

msgbox(vars("a"))
msgbox(CurrentTable.name)
msgbox(CurrentTable.Current("科目名称"))


--  作者:采菊东篱下
--  发布时间:2021/8/22 21:59:00
--  
在窗口的Enter事件已经写了代码:
If Typeof e.sender Is WinForm.TabControl Then \'判断控件是否是文本框
    Dim t As WinForm.TabControl = e.sender \'使用特定类型的变量引用控件
    vars("a") = t.SelectedPage.text
End If

--  作者:采菊东篱下
--  发布时间:2021/8/22 22:01:00
--  
不是判断当前表,当前表没存在审核列,后台的表才有审核列。
--  作者:有点蓝
--  发布时间:2021/8/22 22:15:00
--  
那代码查的就是当前表呀

Dim dt As DataRow = DataTables(vars("a")).Find("[科目名称] = \'" & CurrentTable.Current("科目名称") & "\' And ([已审核] = False Or [已审核] Is null)")

--  作者:采菊东篱下
--  发布时间:2021/8/22 22:25:00
--  
不,这是定义后台的表名等于点选的集合名称的科目名称列等于当前行的科目名称,且审核列为False或审核为空的行。
--  作者:采菊东篱下
--  发布时间:2021/8/22 22:26:00
--  
窗口中的表没有审核列,后台的表才有。
--  作者:有点蓝
--  发布时间:2021/8/22 22:37:00
--  
那说明这个所谓的后台表没有加载需要查询的数据