Foxtable(狐表)用户栏目专家坐堂 → 如何让保存数据前检查行中的列不为空的代码更简洁?


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

主题:如何让保存数据前检查行中的列不为空的代码更简洁?

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


加好友 发短信
等级:四尾狐 帖子:976 积分:8521 威望:0 精华:0 注册:2012/2/9 16:35:00
如何让保存数据前检查行中的列不为空的代码更简洁?  发帖心情 Post By:2012/10/9 22:19:00 [只看该作者]

各位老师,

 

如何运用select case让下面红色的代码能够更简洁些?

 

以下是保存数据前在BeforeSaveDataRow检查行中的列不能为空的代码,行中可能有很多列的数据都要求不能为空。

 

If e.DataRow("唛头") = "" OrElse e.DataRow("业务员") = "" OrElse e.DataRow("生产单号") = "" OrElse e.DataRow.GetChildRows("生产明细").Count = 0 Then '判断是否不符合验证要求
    MessageBox.Show("唛头,业务员,生产单号,生产明细不能为空","存盘失败",MessageBoxButtons.OK,MessageBoxIcon.Exclamation) '提示用户
End If

 

就象下面DataColChanging的代码一样比较简洁,

'表中的列不允许为空

'Select Case e.DataCol.Name

'    Case "生产单号","唛头","业务员"

'    If e.NewValue Is Nothing Then

'        MessageBox.Show("'生产单号,唛头,业务员'不允许为空!")

'        e.Cancel = True

'    End If

'End Select

 

BeforeSaveDataRow又没有DataCol,NewValue这样的e参数? 

 

谢谢!


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


加好友 发短信
等级:四尾狐 帖子:816 积分:6685 威望:0 精华:2 注册:2012/8/23 12:35:00
  发帖心情 Post By:2012/10/9 22:52:00 [只看该作者]

Dim cols() As String={"生产单号","唛头","业务员"}
For Each col As String In cols
    If e.DataCol.Name = col Then
        If e.NewValue Is Nothing Then
            MessageBox.Show(col & "不允许为空!")
            e.Cancel = True
        End If
    End If
Next


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


加好友 发短信
等级:四尾狐 帖子:976 积分:8521 威望:0 精华:0 注册:2012/2/9 16:35:00
  发帖心情 Post By:2012/10/9 23:23:00 [只看该作者]

谢谢二楼,不过你用的那几个e参数都不能用,倒是你提醒我用数组,可以了。代码如下与大家分享

 

Dim ColNames As String() = {"唛头","业务员","生产单号"}
For Each ColName As String In ColNames
    If  e.DataRow(ColName) = "" Then
        MessageBox.Show("唛头,业务员,生产单号,生产明细不能为空","存盘失败",MessageBoxButtons.OK,MessageBoxIcon.Exclamation) '提示用户
    End If
Next


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


加好友 发短信
等级:狐神 帖子:4631 积分:33799 威望:0 精华:0 注册:2008/8/31 22:44:00
  发帖心情 Post By:2012/10/10 0:17:00 [只看该作者]

Dim ss() As String = {"唛头","业务员","生产单号"}
For i As Integer = 0 To ss.Length - 1
    If e.DataRow.IsNull(ss(i))
        MessageBox.Show("唛头,业务员,生产单号,生产明细不能为空")
        Exit For
    End If
Next

 回到顶部