以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  这样的无关联跨表引用在录入界面如何实现?  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=135385)

--  作者:iceblock
--  发布时间:2019/5/25 12:03:00
--  这样的无关联跨表引用在录入界面如何实现?
无关联跨表引用只为显示,不做实际字段,如何设置
后台表结构如下: 订单表与产品表不设关联(本身二表就应通过产品编码关联,没必要设个表关联. )
订单表
订单号  产品编码  数量  交货日期

产品表
产品编码  产品名称  规格型号 



需求:
订单录入界面
订单号 产品编码 产品名称 规格型号 数量  交货日期

其中,产品名称  规格型号 字段 不是订单表实际字段, 只是为显示产品编码相关的信息,不保存后台表中


--  作者:有点蓝
--  发布时间:2019/5/25 13:47:00
--  
添加临时列:http://www.foxtable.com/webhelp/scr/1428.htm

同样通过datacolchanged事件给临时列赋值:http://www.foxtable.com/webhelp/scr/2490.htm

--  作者:iceblock
--  发布时间:2019/5/25 15:19:00
--  临时列,下次再打开项目就没有了?
我想让其一直存在, 即,每次打开订单表, 产品名称 产品规格 都要显示
在表事件录入产品编码时,进行了一次引用。 但并没有存下来。 下次再打开订单表时,这两列(可以再代码加入)就是空的。
怎么办?请指教

另外,看DataColChanged事件有疑惑代码中如下:
Select Case e.DataCol.name
    Case "产品编号"
        Dim dr As DataRow = DataTables("库存").Find("产品编号 = \'" & e.OldValue & "\'")

e.OldValue是之前的产品编号值。应该找新录入的值才对。 为什么是e.OldValue?

--  作者:iceblock
--  发布时间:2019/5/25 15:26:00
--  
DataColChanged事件有疑惑代码清楚了, 帮助例子是改产品表的产品编号, 同步库存表的产品编号。
我的应用,相当于, 在库存表中录入产品编号,引用产品表中产品名称、规格。


--  作者:有点蓝
--  发布时间:2019/5/25 15:27:00
--  
还有问题么?
--  作者:iceblock
--  发布时间:2019/5/25 15:30:00
--  
产品名称 产品规格 都要显示的问题,不行就在订单表里用实字段吧。 就是数据库冗余了。效率应该较高。
谢谢!老师指点!

--  作者:有点蓝
--  发布时间:2019/5/25 15:40:00
--  
临时列可以的呀,有啥问题?

订单表datacolchanged

If e.DataCol.Name = "产品编码" Then
    If e.NewValue Is Nothing Then 
        e.
DataRow("
产品名称") = Nothing 
        e.
DataRow("
产品规格") = Nothing
    
Else
        Dim
 dr As DataRow
        dr = 
DataTables("产品").Find("[
产品编码] = \'" & e.NewValue & "\'")
        If
 dr IsNot Nothing Then 
            e.
DataRow("
产品名称") = dr("产品名称"
            e.
DataRow("
产品规格") = dr("产品规格")
        End
 If
    End
 If
End
 If