Foxtable(狐表)用户栏目专家坐堂 → 引用父表内容


  共有1858人关注过本帖平板打印复制链接

主题:引用父表内容

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


加好友 发短信
等级:幼狐 帖子:93 积分:1029 威望:0 精华:0 注册:2018/4/28 23:27:00
引用父表内容  发帖心情 Post By:2018/5/17 14:13:00 [只看该作者]

各位老师:

我建了一个订单主表和订单明细表,通过订单编号进行关联,
订单明细表中单价是依据“产品名称”引用产品信息表“单价”,订单明细表与产品信息表未建立关联,
订单明细表中“生产编号”是依据订单主表中的“接单日期”自动生成,
现在我是通过订单明细表中“产品名称”和“接单日期”分别设置表达式“parent(订单).产品名称”,“parent(订单).接单日期”直接引用,
再通过订单明细表datecolchanged表事件设置代码:(订单明细表中"单价"为0,也未自动生成生产编号)

通过测试,我认为代码没有错误,也不知道错在哪了,各位大大们帮忙给看看,应该怎么改。谢谢!!!

If e.DataCol.Name = "接单日期" Then
    If e.DataRow.IsNull("接单日期") Then
        e.DataRow("生产编号") = Nothing
    Else
        Dim d As Date = e.DataRow("接单日期")
        Dim y As Integer = d.Year
        Dim m As Integer = d.Month
        Dim Days As Integer = Date.DaysInMonth(y,m)
        Dim fd As Date = New Date(y,m,1) '获得该月的第一天
        Dim ld As Date = New Date(y,m,Days) '获得该月的最后一天
        Dim bh As String = Format(d,"MM") '生成编号的前6位,4位年,2位月.
        If e.DataRow("生产编号").StartsWith(bh) = False '如果编号的前6位不符
            Dim max As String
            Dim idx As Integer
            max = e.DataTable.Compute("Max(生产编号)","接单日期 >= #" & fd & "# And 接单日期 <= #" & ld & "# And [_Identify] <> " & e.DataRow("_Identify")) '取得该月的最大编号
            If max > "" Then '如果存在最大编号
                idx = CInt(max.Substring(2,3)) + 1 '获得最大编号的后三位顺序号,并加1
            Else
                idx = 1 '否则顺序号等于1
            End If
            e.DataRow("生产编号") = bh & Format(idx,"000")
        End If
    End If
End If


If e.DataCol.Name = "产品名称" Then '发生变化的是产品编号吗?
    '在产品表找出该产品
    Dim dz As DataRow
    dz = DataTables("产品信息").Find("产品名称 = '" & e.DataRow("产品名称") & "'" )
    If dz IsNot Nothing '如果找到, 则设置各列内容
                e.DataRow("单价")= dz("单价")


 回到顶部