以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  [求助] 关于判断“包含”和“是否为空”的几个问题  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=128560)

--  作者:龙潭春早
--  发布时间:2018/12/10 15:16:00
--  [求助] 关于判断“包含”和“是否为空”的几个问题

关于判断“包含”和“是否为空”的几个问题


请教:下面的判断和用法有问题吗?


If DataTable.DataCols.Contains("首付款_付款金额") Then


    If DataTable.DataCols.IsNotNull("首付款_付款金额") And _

        DataTable.DataCols.IsNull("二次付款_付款金额"Then

        DataTable.DataCols("二次付款_付款金额") = 0

       

    End If

End If


在代码编辑器中保存代码时,显示错误:


此主题相关图片如下:判断包含列名时出错.jpg
按此在新窗口浏览图片


--  作者:y2287958
--  发布时间:2018/12/10 15:19:00
--  
DataTable.没有这些用法
--  作者:龙潭春早
--  发布时间:2018/12/10 15:37:00
--  
要想做出以上的逻辑判断,老师能给个完整的代码吗?
--  作者:y2287958
--  发布时间:2018/12/10 15:52:00
--  
If DataTables("表").DataCols.Contains("首付款_付款金额") Then
    Dim dr As DataRow = DataTables("表").DataRows(0)  \'这里自己定
    If dr.Isnull("首付款_付款金额") = False AndAlso dr.Isnull("二次付款_付款金额")
        dr.Isnull("二次付款_付款金额") = 0
    End If
End If


--  作者:有点甜
--  发布时间:2018/12/10 16:37:00
--  

具体一点你的问题吧

 

If DataTables("表").DataCols.Contains("首付款_付款金额") Then
    Dim fdr As DataRow = DataTables("表").find("首付款_付款金额 is not null and 二次付款_付款金额 is null")
    If fdr IsNot Nothing Then
        msgbox("找到了")
    End If
End If

[此贴子已经被作者于2018/12/10 16:38:21编辑过]

--  作者:龙潭春早
--  发布时间:2018/12/10 17:29:00
--  
想说的是:

1)任务:对多个表做相同的判断,用在 LoadUserSetting 事件中

          因为有多个表要做相同的判断,所以,代码中能否不体现具体的表名,而用一个通用的代码表示所有的表?

2)判断:当一个表的 “A列” 不为空、而 “B列” 为空时,给 “B列” 赋值为 “0”;

--  作者:有点甜
--  发布时间:2018/12/10 17:52:00
--  

全局表事件,代码写到datacolchanged事件

 

http://www.foxtable.com/webhelp/scr/0671.htm

 


--  作者:龙潭春早
--  发布时间:2018/12/10 21:16:00
--  
嗯 研究了。

不过,根据上面 6楼 提到的任务和判断,甜老师能再给出一段代码吗?

--  作者:有点蓝
--  发布时间:2018/12/10 21:30:00
--  
Dim ts() As String = {"表A","表B"}

For Each t As String In ts
    DataTables(t).ReplaceFor("B列",0,"B列 is null and A列 is not null")
Next

--  作者:龙潭春早
--  发布时间:2018/12/11 13:17:00
--  
哦 昨天晚上是蓝老师值班,谢谢啦!

不过,蓝老师,这段代码还是涉及到了具体的 “表A” 和 “表B”。

按照 6楼 的任务,想对 “多个表要做相同的判断,所以,代码中能否不体现具体的表名而用一个通用的代码表示所有的表?

表比较多的话,一个个的列举出来就很麻烦了。

所以,是否可以将代码:  DataTable.ReplaceFor("B列",0,"B列 is null and A列 is not null")

直接放到全局表事件 datacolchanged 之中呢?

这段代码前后,还需要有其它配合的代码吗?