以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 求,帮忙简化代码! (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=131042) |
-- 作者:304376480 -- 发布时间:2019/2/14 21:29:00 -- 求,帮忙简化代码! 老师您好! 下面是一个用来选择商品的模式窗口,DoubleClick事件中的代码,总感觉挺呆板的感觉,为每一个窗口写着重复的代码! 还有就是用 Forms("窗口名").Opened = True 来判断窗口,是否不够严谨?还有什么方法来判断录入数据的窗口吗?求优化...谢谢! Dim tbl As Table = Tables("选择商品_Table1") Dim nma() As String = {"商品ID","商品名称","型号规格","单位"} If Forms("销售单").Opened = True Then If tbl.Current IsNot Nothing Then Dim dr As Row = Tables("销售单").Current For i As Integer = 0 To nma.Length - 1 dr(nma(i)) = e.Row(nma(i)) Next dr("单价") = e.Row("预售价") End If ElseIf Forms("销售退货单").Opened = True Then If tbl.Current IsNot Nothing Then Dim dr As Row = Tables("销售退货单").Current For i As Integer = 0 To nma.Length - 1 dr(nma(i)) = e.Row(nma(i)) Next dr("单价") = e.Row("最近进价") End If ElseIf Forms("销售退货明细").Opened = True Then If tbl.Current IsNot Nothing Then Dim dr As Row = Tables("销售退货明细_table1").Current For i As Integer = 0 To nma.Length - 1 dr(nma(i)) = e.Row(nma(i)) Next dr("单价") = e.Row("最近进价") End If ElseIf Forms("进货单").Opened = True Then If tbl.Current IsNot Nothing Then Dim dr As Row = Tables("进货单").Current For i As Integer = 0 To nma.Length - 1 dr(nma(i)) = e.Row(nma(i)) Next dr("单价") = e.Row("最近进价") End If ‘...以下还有很多个单据.... END IF |
-- 作者:有点甜 -- 发布时间:2019/2/14 22:30:00 -- 在打开模式窗口的时候,记录是哪个窗口或者哪个表格打开的,如
vars("表") = "表A" vars("窗口") = "窗口1" forms("选择商品").Show
然后,doubleclick事件那里,直接使用 vars("表") vars("窗口") |
-- 作者:304376480 -- 发布时间:2019/2/14 23:55:00 -- 哈哈,好,这样确实简洁多了,感谢甜老师! 看来以后还得多问问才行 再问一下, 在 datatable 中可以用select 来选择 商品不为空的行,count获得行的数量 那么,在 Tables("窗口1_Table1") 表中,如何表示 商品ID 不为空的行,以及行的数量 |
-- 作者:有点甜 -- 发布时间:2019/2/15 9:24:00 -- 方法一:直接筛选 tables("表A").filter = "第一列 is not null"
方法二:循环每一行,然后判断某列的值;如果要获取行数据量,可以用compute统计个数。 |
-- 作者:304376480 -- 发布时间:2019/2/15 11:08:00 -- 以下是引用有点甜在2019/2/15 9:24:00的发言: 方法二:循环每一行,然后判断某列的值;如果要获取行数据量,可以用compute统计个数。 Dim n As Integer For Each r As Row In Tables("进货明细_table1").Rows
If r.Isnull("商品ID") Then
Continue For
End If
Output.Show(r("商品名称"))
n += 1 Next Output.Show(n)
[此贴子已经被作者于2019/2/15 11:09:06编辑过]
|
-- 作者:有点甜 -- 发布时间:2019/2/15 11:40:00 --
Dim n = Tables("进货明细_table1").compute("count(商品id)", "商品id is not null") msgbox(n)
|
-- 作者:304376480 -- 发布时间:2019/2/15 11:54:00 -- 原来count还可以这样用啊,学习了! |