以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]自动匹配的窗口代码有误  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=121302)

--  作者:倪远歌1
--  发布时间:2018/7/3 15:53:00
--  [求助]自动匹配的窗口代码有误
想搞一个输入尺寸可以自动匹配纸箱并计算容积率的窗口:
如图

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

数值输入框SPL的valuechanged事件代码如下:
Dim drs As List(Of DataRow)
Dim dr1 As DataRow 
Dim dr2 As DataRow
Dim spl As WinForm.NumericComboBox = e.Form.Controls("SPL")
Dim spw As WinForm.NumericComboBox = e.Form.Controls("SPW")
Dim sph As WinForm.NumericComboBox = e.Form.Controls("SPH")
Dim ZX1 As WinForm.ComboBox = e.Form.Controls("ZX1")
Dim ZX1L As WinForm.NumericComboBox = e.Form.Controls("ZX1L")
Dim ZX1W As WinForm.NumericComboBox = e.Form.Controls("ZX1W")
Dim ZX1H As WinForm.NumericComboBox = e.Form.Controls("ZX1H")
Dim ZX1V As WinForm.NumericComboBox = e.Form.Controls("ZX1V")
Dim ZX2 As WinForm.ComboBox = e.Form.Controls("ZX2")
Dim ZX2L As WinForm.NumericComboBox = e.Form.Controls("ZX2L")
Dim ZX2W As WinForm.NumericComboBox = e.Form.Controls("ZX2W")
Dim ZX2H As WinForm.NumericComboBox = e.Form.Controls("ZX2H")
Dim ZX2V As WinForm.NumericComboBox = e.Form.Controls("ZX2V")
drs= DataTables("包材数据库").Select("[包材大类]=\'纸箱\' and [最大内尺寸_长] >= spl.Value And [最大内尺寸_宽] >= spw.value And  [最大内尺寸_高] >= sph.value", "容积" )
dr1=drs(0)
dr2=drs(1)

zx1.text = dr1("包材编码")
zx1l.value = dr1("最大内尺寸_长")
zx1w.value = dr1("最大内尺寸_宽")
zx1h.value = dr1("最大内尺寸_高")
zx1v.value = spl.value * spw.value * sph.value / dr1("最大内尺寸_长")/ dr1("最大内尺寸_宽")/dr1("最大内尺寸_高")

zx2=..........
......


报错如下:未找到列 [spl.Value]。。




[此贴子已经被作者于2018/7/3 17:11:40编辑过]

--  作者:有点蓝
--  发布时间:2018/7/3 20:12:00
--  

drs= DataTables("包材数据库").Select("[包材大类]=\'纸箱\' and [最大内尺寸_长] >= " & spl.Value & " And [最大内尺寸_宽] >= " & spw.value & " And  [最大内尺寸_高] >= " & sph.value, "容积" )
If drs.count > 1 Then
    dr1=drs(0)
    dr2=drs(1)
    
    zx1.text = dr1("包材编码")
    zx1l.value = dr1("最大内尺寸_长")
    zx1w.value = dr1("最大内尺寸_宽")
    zx1h.value = dr1("最大内尺寸_高")
    zx1v.value = spl.value * spw.value * sph.value / dr1("最大内尺寸_长")/ dr1("最大内尺寸_宽")/dr1("最大内尺寸_高")
End If

--  作者:倪远歌1
--  发布时间:2018/7/4 9:48:00
--  
还是报错:
语法错误:“And”运算符前缺少操作数。

动态合成表达式例子太少了,看不太懂,
比如说表达式应该是字符串为什么不是以“结尾???
或者是这样
drs= DataTables("包材数据库").Select("[包材大类]=\'纸箱\' and [最大内尺寸_长] >= "& spl.Value &" And [最大内尺寸_宽] >= "& spw.value &" And  [最大内尺寸_高] >= "& sph.value &"", "容积" )
???
[此贴子已经被作者于2018/7/4 9:54:19编辑过]

--  作者:有点甜
--  发布时间:2018/7/4 10:44:00
--  

改成

 

drs= DataTables("包材数据库").Select("[包材大类]=\'纸箱\' and [最大内尺寸_长] >= " & val(spl.Value) & " And [最大内尺寸_宽] >= " & val(spw.value) & " And  [最大内尺寸_高] >= " & val(sph.value), "容积" )

 

如果还报错,弹出这个看看

 

msgbox("[包材大类]=\'纸箱\' and [最大内尺寸_长] >= " & val(spl.Value) & " And [最大内尺寸_宽] >= " & val(spw.value) & " And  [最大内尺寸_高] >= " & val(sph.value))

 

如果还报错,做个例子发上来测试。