以文本方式查看主题
- Foxtable(狐表) (http://foxtable.net/bbs/index.asp)
-- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2)
---- [求助]判断空行后删除 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=106553)
|
-- 作者:xh2207
-- 发布时间:2017/9/11 15:19:00
-- [求助]判断空行后删除
请指教:目的是将当前表中有空格的行删除,求的代码。因为Deletefor是datatable,而delete是窗口_table,但无法增加条件判断。
此主题相关图片如下:删除.png
|
-- 作者:有点甜
-- 发布时间:2017/9/11 15:22:00
--
Dim t As Table = e.form.controls("Table1").Table
t.DataTable.DeleteFor("品名 is null and 规格型号 is null")
|
-- 作者:xh2207
-- 发布时间: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
|
-- 作者:有点甜
-- 发布时间:2017/9/12 11:06:00
--
Dim r As Row = e.form.controls("订货明细表").Table.Current
|
-- 作者:xh2207
-- 发布时间:2017/9/12 11:14:00
--
这样只能删除当前行,假如表的行数有很多行,而空值行又不在第一行,每次afterload后当前行要么在第一行,要么在未行。若只能删除当前行,不符常规。
考虑过在代码前增加
FOR EACH.....
NEXT
但发觉空行在第一行是正常,在其他行是无法判断。
[此贴子已经被作者于2017/9/12 11:16:41编辑过]
|
-- 作者:有点甜
-- 发布时间: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
-- 发布时间: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
|
-- 作者:有点甜
-- 发布时间: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
-- 发布时间:2017/9/13 16:10:00
--
现是一次性删除空行,一次一行呢,怎修改?
一次性删除空行后一次性保存保存功能代码?
|
-- 作者:有点甜
-- 发布时间: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
|