以文本方式查看主题
- Foxtable(狐表) (http://foxtable.net/bbs/index.asp)
-- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2)
---- 表间参数引用 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=9217)
|
-- 作者:caoxy
-- 发布时间:2011/3/15 10:10:00
-- 表间参数引用
具体要求是:
送货单录入窗口引用参数表部分内容
1、在窗口名称下拉框中引用参数表中的材料名称,单位自动显示。
2、在驾驶员下拉框中引用参数表中的驾驶员,车号、车长自动显示。
|
-- 作者:狐狸爸爸
-- 发布时间:2011/3/15 10:26:00
--
你在窗口的AfterLoad事件中加入下面的代码,即可实现名称下拉框中引用参数表中的材料名称,以及驾驶员下拉框中引用参数表中的驾驶员:
Dim dt AS DataTable = DataTables("参数") Dim lst AS String = dt.GetComboListString("材料名称") e.Form.Controls("ComboBox2").ComboList = lst e.Form.Controls("ComboBox3").ComboList = lst e.Form.Controls("ComboBox4").ComboList = lst e.Form.Controls("ComboBox5").ComboList = lst e.Form.Controls("ComboBox11").ComboList = dt.GetComboListString("驾驶员")
至于自动输入单位、车号和车长,你可以参考下面的帮助,尝试自己写一下,如果搞不定,再发帖提问。
http://help.foxtable.com/topics/1458.htm
|
-- 作者:caoxy
-- 发布时间:2011/3/15 13:06:00
--
If e.DataCol.Name = "品名1" Then \'发生变化的是产品编号吗? \'在产品表找出该产品 Dim dr As DataRow dr = DataTables("参数").Find("材料名称 = " & "\'" & e.DataRow("品名1") & "\'" ) If dr IsNot Nothing \'如果找到, 则设置各列内容 e.DataRow("单位1")= dr("单位") End If End If If e.DataCol.Name = "品名2" Then \'发生变化的是产品编号吗? \'在产品表找出该产品 Dim dr As DataRow dr = DataTables("参数").Find("材料名称 = " & "\'" & e.DataRow("品名2") & "\'" ) If dr IsNot Nothing \'如果找到, 则设置各列内容 e.DataRow("单位2")= dr("单位") End If End If If e.DataCol.Name = "品名3" Then \'发生变化的是产品编号吗? \'在产品表找出该产品 Dim dr As DataRow dr = DataTables("参数").Find("材料名称 = " & "\'" & e.DataRow("品名3") & "\'" ) If dr IsNot Nothing \'如果找到, 则设置各列内容 e.DataRow("单位3")= dr("单位") End If End If If e.DataCol.Name = "品名4" Then \'发生变化的是产品编号吗? \'在产品表找出该产品 Dim dr As DataRow dr = DataTables("参数").Find("材料名称 = " & "\'" & e.DataRow("品名4") & "\'" ) If dr IsNot Nothing \'如果找到, 则设置各列内容 e.DataRow("单位4")= dr("单位") End If End If If e.DataCol.Name = "品名5" Then \'发生变化的是产品编号吗? \'在产品表找出该产品 Dim dr As DataRow dr = DataTables("参数").Find("材料名称 = " & "\'" & e.DataRow("品名5") & "\'" ) If dr IsNot Nothing \'如果找到, 则设置各列内容 e.DataRow("单位5")= dr("单位") End If End If If e.DataCol.Name = "品名6" Then \'发生变化的是产品编号吗? \'在产品表找出该产品 Dim dr As DataRow dr = DataTables("参数").Find("材料名称 = " & "\'" & e.DataRow("品名6") & "\'" ) If dr IsNot Nothing \'如果找到, 则设置各列内容 e.DataRow("单位6")= dr("单位") End If End If If e.DataCol.Name = "品名7" Then \'发生变化的是产品编号吗? \'在产品表找出该产品 Dim dr As DataRow dr = DataTables("参数").Find("材料名称 = " & "\'" & e.DataRow("品名7") & "\'" ) If dr IsNot Nothing \'如果找到, 则设置各列内容 e.DataRow("单位7")= dr("单位") End If End If If e.DataCol.Name = "品名8" Then \'发生变化的是产品编号吗? \'在产品表找出该产品 Dim dr As DataRow dr = DataTables("参数").Find("材料名称 = " & "\'" & e.DataRow("品名8") & "\'" ) If dr IsNot Nothing \'如果找到, 则设置各列内容 e.DataRow("单位8")= dr("单位") End If End If
1、上面代玛是否能筒化
2、送货单录入窗口只有前四个下拉框有材料名称录入,后四个下拉框没有反映
烦请师傅帮忙
|
-- 作者:blackzhu
-- 发布时间:2011/3/15 13:41:00
--
你这个我想不需要搞这么多列,应该是多数据就可以了.举个例子,你现在做的是一个日期内同一个司机装的货为品名1和品名2等等.你可以将同一日期内的分成几行数据来处理.日期是一样的处理就可以了呀如
日期 司机 品名
2011-01-13 A B
2011-01-13 A C
2011-01-13 A D
2011-02-01 B A
2011-02-01 B C
2011-02-01 B E
|
-- 作者:caoxy
-- 发布时间:2011/3/15 13:53:00
--
谢谢师傅的指点
因为我有一个送货单
|
-- 作者:狐狸爸爸
-- 发布时间:2011/3/15 14:10:00
--
代码可以简化为:
Select Case e.DataCol.Name Case "品名1","品名2","品名3","品名4","品名5","品名6","品名7","品名8" \'在产品表找出该产品 Dim dr As DataRow dr = DataTables("参数").Find("材料名称 = " & "\'" & e.DataCol.Name & "\'" ) If dr IsNot Nothing \'如果找到, 则设置各列内容 e.DataRow("单位" & e.DataCol.Name.SubString(2))= dr("单位") End If End Select
其实你可以考虑用关联表。
[此贴子已经被作者于2011-3-15 14:10:45编辑过]
|
-- 作者:caoxy
-- 发布时间:2011/3/15 15:19:00
--
单位也有8个列,应用后不显示
|
-- 作者:狐狸爸爸
-- 发布时间:2011/3/15 16:07:00
--
我手误,代码应该是:
Select Case e.DataCol.Name Case "品名1","品名2","品名3","品名4","品名5","品名6","品名7","品名8" \'在产品表找出该产品 Dim dr As DataRow dr = DataTables("参数").Find("材料名称 = " & "\'" & e.DataRow(e.DataCol.Name) & "\'" ) If dr IsNot Nothing \'如果找到, 则设置各列内容 e.DataRow("单位" & e.DataCol.Name.SubString(2))= dr("单位") End If End Select
8列都可以的,请仔细体会一下上面的代码。
|