Foxtable(狐表)用户栏目专家坐堂 → 表间参数引用


  共有12055人关注过本帖树形打印复制链接

主题:表间参数引用

帅哥哟,离线,有人找我吗?
caoxy
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:童狐 帖子:299 积分:1939 威望:0 精华:0 注册:2011/3/9 18:17:00
表间参数引用  发帖心情 Post By:2011/3/15 10:10:00 [只看该作者]

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

具体要求是:

送货单录入窗口引用参数表部分内容

1、在窗口名称下拉框中引用参数表中的材料名称,单位自动显示。

2、在驾驶员下拉框中引用参数表中的驾驶员,车号、车长自动显示。

 


 回到顶部
帅哥哟,离线,有人找我吗?
狐狸爸爸
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By: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
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:童狐 帖子:299 积分:1939 威望:0 精华:0 注册:2011/3/9 18:17:00
  发帖心情 Post By: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
  4楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章
等级:狐仙 帖子:9879 积分:57640 威望:0 精华:15 注册:2008/9/1 9:45:00
  发帖心情 Post By: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
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:童狐 帖子:299 积分:1939 威望:0 精华:0 注册:2011/3/9 18:17:00
  发帖心情 Post By:2011/3/15 13:53:00 [只看该作者]

谢谢师傅的指点

因为我有一个送货单

 


 回到顶部
帅哥哟,离线,有人找我吗?
狐狸爸爸
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By: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
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:童狐 帖子:299 积分:1939 威望:0 精华:0 注册:2011/3/9 18:17:00
  发帖心情 Post By:2011/3/15 15:19:00 [只看该作者]

单位也有8个列,应用后不显示

 回到顶部
帅哥哟,离线,有人找我吗?
狐狸爸爸
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By: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列都可以的,请仔细体会一下上面的代码。


 回到顶部