Foxtable(狐表)用户栏目专家坐堂 → [求助]判断空行后删除


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

主题:[求助]判断空行后删除

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


加好友 发短信
等级:幼狐 帖子:190 积分:1593 威望:0 精华:0 注册:2013/1/6 19:46:00
[求助]判断空行后删除  发帖心情 Post By:2017/9/11 15:19:00 [只看该作者]

请指教:目的是将当前表中有空格的行删除,求的代码。因为Deletefor是datatable,而delete是窗口_table,但无法增加条件判断。

 


图片点击可在新窗口打开查看此主题相关图片如下:删除.png
图片点击可在新窗口打开查看

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2017/9/11 15:22:00 [只看该作者]

Dim t As Table = e.form.controls("Table1").Table

t.DataTable.DeleteFor("品名 is null and 规格型号 is null")


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


加好友 发短信
等级:幼狐 帖子:190 积分:1593 威望:0 精华:0 注册:2013/1/6 19:46:00
  发帖心情 Post By:2017/9/12 10:14:00 [只看该作者]

 版主,想增加一个条件判断窗口表规定的字段空值是否存在空值,提示后确认是删除,否则不删除。不懂,请指教怎定义r(怎完善代码)。非常感谢!

 

dim r as .....

If r.Isnull("品名")  Or  r.Isnull("型号规格")  Or  r.Isnull("计量单位") Or  r.Isnull("订货数量") = True Then
    If  MessageBox.show("规定的字段有空值,是否删除空值行后保存!","提示",MessageBoxButtons.YesNo) = DialogResult.Yes

            Dim t As Table = e.form.controls("订货明细表").Table
            t.DataTable.DeleteFor("品名 Is null  or 型号规格 Is null   or   计量单位 is null   or  订货数量  is null " )

   else

      return

   end if

end if


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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2017/9/12 11:06:00 [只看该作者]

Dim r As Row = e.form.controls("订货明细表").Table.Current

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


加好友 发短信
等级:幼狐 帖子:190 积分:1593 威望:0 精华:0 注册:2013/1/6 19:46:00
  发帖心情 Post By:2017/9/12 11:14:00 [只看该作者]

这样只能删除当前行,假如表的行数有很多行,而空值行又不在第一行,每次afterload后当前行要么在第一行,要么在未行。若只能删除当前行,不符常规。

 

考虑过在代码前增加

FOR EACH.....

 

 

NEXT

 

但发觉空行在第一行是正常,在其他行是无法判断。

[此贴子已经被作者于2017/9/12 11:16:41编辑过]

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2017/9/12 11:43:00 [只看该作者]

Dim t As Table = e.form.controls("订货明细表").Table
For i As Integer = t.rows.count-1 To 0 Step -1
    Dim r As Row = t.rows(i)
    If r.Isnull("品名")  Or  r.Isnull("型号规格")  Or  r.Isnull("计量单位") Or  r.Isnull("订货数量") = True Then
        If  MessageBox.show("规定的字段有空值,是否删除空值行后保存!","提示",MessageBoxButtons.YesNo) = DialogResult.Yes
           
            r.delete
        End If
    End If
   
Next

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


加好友 发短信
等级:幼狐 帖子:190 积分:1593 威望:0 精华:0 注册:2013/1/6 19:46:00
  发帖心情 Post By:2017/9/13 15:41:00 [只看该作者]

请指教,如何完善窗口保存按键代码。想达到如下功能:

1、Tables("工程需求_订货明细表")的行数为零和行规定的字段有空值,不允许保存。

2、若有Tables("工程需求_订货明细表")行规定的字段有空值,删除后才能保存。

是否只能将判断代码放在表的beforesavedatarow或其他位置,请指教思路或完善代码,非常感谢!

 

 

If Tables("工程需求_订货明细表").Rows.Count =0 Then
    If MessageBox.Show("无明细,不保存!","请确认",MessageBoxButtons.YesNo,messageboxicon.question) = DialogResult.Yes Then
        Tables("订货主表").Current.Delete
        Tables("订货主表").Position =Tables("订货主表").Rows.Count - 1
        e.Form.Controls("datetimepicker1").text = Tables("订货主表").Current("订货日期")
        e.Form.Controls("TextBox1").text = Tables("订货主表").Current("订单号")
        e.Form.Controls("ComboBox1").text = Tables("订货主表").Current("订货人")
        e.Form.Controls("ComboBox2").text = Tables("订货主表").Current("工程类别")
        e.Form.Controls("DropBox1").text =Tables("订货主表").Current("工程名称")
        e.Form.Controls("DropBox2") .text= Tables("订货主表").Current("工程编号")
    End If
Else '工程需求_订货明细表有行
    Dim t As Table = e.form.controls("订货明细表").Table
    For i As Integer = t.rows.count-1 To 0 Step -1
        Dim r As Row = t.rows(i)
        If r.Isnull("品名")  Or  r.Isnull("型号规格")  Or  r.Isnull("计量单位") Or  r.Isnull("订货数量") = True Then '有空行
            If  MessageBox.show("有空值,不保存!是否删除空值行?","提示",MessageBoxButtons.YesNo) = DialogResult.Yes  '是否删除'
                r.delete '删除'
            Else
                Return '不删,退出'
            End If
        Else
            Return '无空行
        End If
    Next
    For Each dr As Row In Tables("工程需求_订货明细表").Rows  '删除后保存
        dr.save
        dr.locked = True
    Next
    DataTables("订货明细表").AllowEdit =False
    DataTables("订货主表").save
    Tables("订货主表").Current.locked = True
    DataTables("订货主表").AllowEdit =False
End If


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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2017/9/13 15:50:00 [只看该作者]

你需要一次性删除还是一行一行删除?

 

Dim t As Table = e.form.controls("订货明细表").Table
If t.rows.count = 0 Then
    msgbox("表格为空")
    Return
End If
For i As Integer = t.rows.count-1 To 0 Step -1
    Dim r As Row = t.rows(i)
    If r.Isnull("品名")  Or  r.Isnull("型号规格")  Or  r.Isnull("计量单位") Or  r.Isnull("订货数量") = True Then '有空行
        If  MessageBox.show("有空值,不保存!是否删除空值行?","提示",MessageBoxButtons.YesNo) = DialogResult.Yes  '是否删除'
            r.delete '删除'
        Else
            Return '不删,退出'
        End If
    End If
Next


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


加好友 发短信
等级:幼狐 帖子:190 积分:1593 威望:0 精华:0 注册:2013/1/6 19:46:00
  发帖心情 Post By:2017/9/13 16:10:00 [只看该作者]

现是一次性删除空行,一次一行呢,怎修改?

一次性删除空行后一次性保存保存功能代码?


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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2017/9/13 16:31:00 [只看该作者]

8楼的是一行一行删除。每删除一行弹出一个提示。

 

如果要整体删除,参考

 

Dim t As Table = e.form.controls("订货明细表").Table
If t.rows.count = 0 Then
    msgbox("表格为空")
    Return
End If
For i As Integer = t.rows.count-1 To 0 Step -1
    Dim r As Row = t.rows(i)
    If r.Isnull("品名")  Or  r.Isnull("型号规格")  Or  r.Isnull("计量单位") Or  r.Isnull("订货数量") = True Then '有空行
        If  MessageBox.show("有空值,不保存!是否删除空值行?","提示",MessageBoxButtons.YesNo) = DialogResult.Yes  '是否删除'
            Exit For
        Else
            Return '不删,退出'
        End If
    End If
Next
For i As Integer = t.rows.count-1 To 0 Step -1
    Dim r As Row = t.rows(i)
    If r.Isnull("品名")  Or  r.Isnull("型号规格")  Or  r.Isnull("计量单位") Or  r.Isnull("订货数量") = True Then '有空行
        r.delete
    End If
Next

 


 回到顶部
总数 19 1 2 下一页