以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  行列动态求和判断的问题  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=177873)

--  作者:allenyen
--  发布时间:2022/6/8 9:41:00
--  行列动态求和判断的问题
商品编码 商品名称 订单数量 已排产数量 未排产数量 8日 9日 10日 11日 12日 13日 14日
1001 轴承A 500 0 500 50 200 600        
1002 轴承B 300 0 300              
现状:这是动态生成的临时表,8-14日的列是根据当前日期动态变更,
目的:想实现在日期列输入数量的时候自动校验未排数量,如在10日输入600的时候8日+9日+10日超出了未排数量就提示超出

请教下大佬如何实现
[此贴子已经被作者于2022/6/8 9:43:31编辑过]

--  作者:有点蓝
--  发布时间:2022/6/8 10:05:00
--  
datacolchanging事件

if e.datacol.name like "*日" then
dim k as integer = val(e.datacol.name.trim("日"))
dim sum as integer
for i as integer = 1 to k
if e.datatable.datacols.contains(i & "日") then
sum =  sum + e.datarow(i & "日")
end if
next
if sum > e.datarow("未排产数量") then
msgbox("超出")
e.cancel=true
end if
endif

--  作者:狐狸爸爸
--  发布时间:2022/6/8 10:13:00
--  
另一种方式,用颜色

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目413.table


建议:

1、任何人写出能用的好代码,都要经过测试调整,所以提问的时候,最好自己把表设计好发上来,否则别人想帮你解决问题,还要先需要设计表,输入测试数据。
2、问题要更明确,你说的是要提示, 正常提示指的是MessageBox,可你截图用的是颜色标记,蓝版主理解你是要用messagebox,我理解你要颜色。

不明确,没有测试数据,会耽误工程师的时间,影响服务质量,也耽误了为其他人服务。
[此贴子已经被作者于2022/6/8 10:18:07编辑过]

--  作者:allenyen
--  发布时间:2022/6/8 10:18:00
--  
Dim dtb As New DataTableBuilder("lsb1")        
    dtb.AddDef("商品编码", Gettype(String), 30)
    dtb.AddDef("商品名称", Gettype(String), 50)
    dtb.AddDef("订单数量", Gettype(Integer))
    dtb.AddDef("已排产数量", Gettype(Integer))
    dtb.AddDef("未排产数量", Gettype(Integer))    
    For Each d As String  In dtw.GetValues("日","","id")
        dtb.AddDef(d, Gettype(Double))
    Next
    dtb.Build()
    Tables(e.form.name & "_Table1").DataSource  = DataTables("lsb1")

DataTableBuilder 生成的临时表好像不能用datacolchanging事件
以上是生成临时表代码


--  作者:有点蓝
--  发布时间:2022/6/8 10:28:00
--  
到全局表事件处理:http://www.foxtable.com/webhelp/topics/0671.htm
--  作者:狐狸爸爸
--  发布时间:2022/6/8 10:31:00
--  
如果要颜色标记,可通过代码增加样式: