以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  关联表内容填充代码请求帮忙  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=79089)

--  作者:yaojun
--  发布时间:2015/12/24 7:43:00
--  关联表内容填充代码请求帮忙

我做了个“物料中心”表并关联一个“交易明细”的子表,子表是空白的,想从一“采购单”下关联的“采购明细”子表和一“发料单”下关联的“发料明细”子表中的内容做填充(所有关联都采用物料编号为关联,交易明细是锁定不可编辑的)。

即:采购明细增加(或删除)一行,交易明细中对应的也增加(或删除)一行,发料明细增加(或删除)一行,也在交易明细中对应的物料行里增加(或者删除)一行,用来快速方便的查阅该物料的变动情况


--  作者:Hyphen
--  发布时间:2015/12/24 8:08:00
--  

参考http://www.foxtable.com/help/topics/2490.htm

 


--  作者:yaojun
--  发布时间:2015/12/24 17:23:00
--  

Select Case e.DataCol.name
    Case "物料编号"
        Dim dr As DataRow = DataTables("物料明细").Find("物料编号 = \'" & e.OldValue & "\'")
          If dr Is Nothing Then
             dr = DataTables("物料明细").AddNew()
             dr("物料编号") = e.DataRow("物料编号")
             dr("物料名称") = e.DataRow("物料名称")
             dr("规格型号") = e.DataRow("规格型号")
             dr("入库单号") = e.DataRow("入库单号")
              dr("入库数量") = e.DataRow("入库数量")
             dr("交易日期") = e.DataRow("交易日期")
             dr("供货厂家") = e.DataRow("供货厂家")
             dr("备注") = e.DataRow("备注")
         Else
            dr("物料编号") = e.DataRow("物料编号")
            
         End If
    Case  "产品名称","规格型号"
         Dim dr As DataRow = DataTables("物料明细").Find("物料编号 = \'" & e.DataRow("物料编号") & "\'")
         If dr IsNot Nothing Then
            dr(e.DataCol.Name) = e.DataRow(e.DataCol.Name)
          End If
 End  Select

 

这样效果是达到了,不过只是选择物料编号后,其它列里不动的内容都可以填充,但是其中“入库数量”列输入数据后,物料明细表了对应列不发生改变,都是0,请教如何操作。


--  作者:大红袍
--  发布时间:2015/12/24 17:31:00
--  

Case  "产品名称","规格型号"

 

改成

 

Case  "物料名称", "入库单号", "入库数量"


--  作者:yaojun
--  发布时间:2015/12/24 18:07:00
--  

这样的话,数据是发生变化了,但是效果明显没有第一种好,因为这样的话,会导致各个表操作后,都只在第一行发生变化,其它行都没有了


--  作者:大红袍
--  发布时间:2015/12/24 18:39:00
--  

那你改成replacefor

 

http://www.foxtable.com/help/topics/1532.htm

 

 

 


--  作者:yaojun
--  发布时间:2015/12/24 18:57:00
--  

用replacefor怎样确定Value值啊?

DataTables("物料明细").ReplaceFor("入库数量", "入库数量")  ?


--  作者:yaojun
--  发布时间:2015/12/24 19:14:00
--  

经观察,采用3楼代码如果是先输入入库数量,后输入物料编号的情况下,则”物料明细“表的入库数量数据可以发生改变,如此的话,是否可以把3楼的代码改为按钮”保存“的代码,即先填写进内容后,再按保存按钮,不知道能否实现,请教代码如何改写,谢谢了


--  作者:大红袍
--  发布时间:2015/12/24 19:37:00
--  

beforeSaveDataRow是事件

 

Dim dr As DataRow = DataTables("物料明细").Find("物料编号 = \'" & e.DataRow("物料编号") & "\'")
If dr IsNot Nothing Then
    dr("入库数量") = e.DataRow("入库数量")
End If


--  作者:yaojun
--  发布时间:2015/12/24 19:53:00
--  
9楼代码后,物料明细中也是只有一行的入库数量发生改变,后续的都不发生改变,只在第一行发生改变