以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  如何判断删除行的某个字段不为空  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=108736)

--  作者:happyft
--  发布时间:2017/10/28 8:58:00
--  如何判断删除行的某个字段不为空
\'---获取已删除行(通过sql事务一次性删除)
Dim systable As System.Data.DataTable = tb.BaseTable
Dim ChangeTable As System.Data.DataTable = systable.GetChanges(System.Data.DataRowState.Deleted)
If ChangeTable IsNot Nothing Then
    Dim strIDC As String = "" \'单据识别列
    For Each cdr As System.Data.DataRow In ChangeTable.Rows  \'遍历删除行
        \'--集合所有删除表单的单据识别列
        If cdr(dr("IDC"),System.Data.DataRowVersion.Original) > "" Then  \'单据识别列不为空
            strIDC + = cdr(dr("IDC"),System.Data.DataRowVersion.Original)
        End If
    Next
End If

上面红色的表示删除掉的行的IDC字段不为空时才执行,但这样写提示出错,要怎么写才行?

谢谢!

--  作者:有点蓝
--  发布时间:2017/10/28 9:07:00
--  
参考:http://www.foxtable.com/webhelp/scr/0426.htm
--  作者:HappyFt
--  发布时间:2017/10/28 9:24:00
--  
 If cdr.Isnull(dr("IDC"),System.Data.DataRowVersion.Original) = False Then  \'单据识别列不为空

这样也会出错,提示"无法将类型为“System.String”的对象强制转换为类型“System.Data.DataColumn”。

                        

--  作者:有点蓝
--  发布时间:2017/10/28 10:16:00
--  
If cdr.Isnull("IDC") = False Then 
--  作者:HappyFt
--  发布时间:2017/10/28 10:42:00
--  
不能直直接那样用, dr("IDC") 是引用的变量,比如订单其值为订单编号,采购单则为采购单号

 For Each cdr As System.Data.DataRow In ChangeTable.Rows  \'遍历删除行
        \'--集合所有删除表单的单据识别列
        If cdr(dr("IDC"),System.Data.DataRowVersion.Original) > "" Then  \'单据识别列不为空
            strIDC + = cdr(dr("IDC"),System.Data.DataRowVersion.Original)
        End If
    Next

--  作者:有点蓝
--  发布时间:2017/10/28 10:58:00
--  
这个意思?

dim idc as string = "订单编号"
If cdr.Isnull(idc) = False Then 
……

--  作者:HappyFt
--  发布时间:2017/10/30 9:02:00
--  
不是那个意思,用ft普通的删除这样写没错
if cdr.Isnull("订单编号") = false then 

而我是用sql删除后保存时要判断已经删除掉的行某列是否为空(要用其值回收自动编码,为空时会出错)

If cdr("订单编号",System.Data.DataRowVersion.Original) > "" Then  \'单据识别列不为空
If cdr.Isnull("订单编号",System.Data.DataRowVersion.Original) = false Then  \'单据识别列不为空

不是变量的问题,因为字段不为空时都不出错,而是后面加了System.Data.DataRowVersion.Original后写法的问题
两种写法都会出错,不知道要怎么写?

--  作者:有点甜
--  发布时间:2017/10/30 9:19:00
--  

弹出值,看是什么

 

If cdr("订单编号",System.Data.DataRowVersion.Original).ToString > "" Then