以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]跨表引用  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=77972)

--  作者:qwz405
--  发布时间:2015/11/29 20:12:00
--  [求助]跨表引用
实现:今天创建的数据,才能跨表引用
代码如下,应该是不严谨的,麻烦老师指教。


If e.DataCol.Name = "第一列" Then
    If e.NewValue Is Nothing Then
        e.DataRow("第二列") = Nothing
        e.DataRow("第三列") = Nothing
    Else
        Dim dt As Date = Date.Today
        If e.DataRow("time") = dt Then
            Dim dr As DataRow
            dr = DataTables("表B").Find("[第一列] = \'" & e.NewValue & "\'")
            If dr IsNot Nothing Then
                e.DataRow("第二列") = dr("第二列")
                e.DataRow("第三列") = dr("第三列")
            End If
        End If
    End If
End If


--  作者:大红袍
--  发布时间:2015/11/29 23:14:00
--  

你想弄成什么效果?要么你去掉 If e.DataRow("time") = dt Then 的判断。


--  作者:qwz405
--  发布时间:2015/11/30 9:53:00
--  
表A新增一行,“time”列自动=date.today

需要的效果是:今天新增的行,其可以跨表引用表B的数据。
如果过了今天,那么再修改“第一列”,其数据也不会被修改。

以前用用这个代码,一直正常的。
现在新换了个表用这代码,老是报错,而且关闭不了。
我注释了“If e.DataRow("time") = dt Then”确认OK,问题是出在这里,但不知道如果修改代码,达到我需要的目的。

--  作者:大红袍
--  发布时间:2015/11/30 10:05:00
--  

报什么错啊?看是不是日期问题

 

http://www.foxtable.com/bbs/dispbbs.asp?BoardID=2&ID=76935&skin=0

 

[此贴子已经被作者于2015/11/30 10:04:45编辑过]

--  作者:qwz405
--  发布时间:2015/11/30 12:02:00
--  
老师,错误提示:调用目标发生了异常。
这个错误无法显示详细信息,而且无法关闭,需要“结束任务”关闭整个程序。

如果注释If e.DataRow("time") = dt Then”,可以正常使用,但我怕有人不小心改到不是今天的数据。


图片点击可在新窗口打开查看此主题相关图片如下:111.jpg
图片点击可在新窗口打开查看

代码如下:
Select Case e.DataCol.name
    Case "机型"  \'从机型明细表,自动带入标准规格
        If e.DataRow.IsNull("机型") Then
            e.DataRow("订单规格_控制型式") = Nothing
            e.DataRow("订单规格_主轴") = Nothing
            e.DataRow("订单规格_平衡方式") = Nothing
            e.DataRow("订单规格_冲屑装置") = Nothing
        Else
            Dim dt As Date = Date.Today
            If Tables("生产计划").Current("作业日期") = dt   \'自动带入今天创建计划的规格
                Dim dr As  DataRow
                dr =  DataTables("机型明细").Find("[机型] = \'" & e.NewValue &  "\'")
                If dr IsNot Nothing
                    e.DataRow("订单规格_控制型式") = dr("标准规格_控制型式")
                    e.DataRow("订单规格_主轴") = dr("标准规格_主轴")
                    e.DataRow("订单规格_平衡方式") = dr("标准规格_平衡方式")
                    e.DataRow("订单规格_冲屑装置") = dr("标准规格_冲屑装置")
                End If
            End If
        End If
End Select


图片点击可在新窗口打开查看此主题相关图片如下:222.jpg
图片点击可在新窗口打开查看

[此贴子已经被作者于2015/11/30 12:08:52编辑过]

--  作者:大红袍
--  发布时间:2015/11/30 12:20:00
--  

会不会是你 Tables("生产计划").Current("作业日期") 的表没有哪怕一行数据?


--  作者:qwz405
--  发布时间:2015/11/30 13:15:00
--  
谢谢老师~!

大意啊,这张表我弄了个“创建日期”列,哎~确实没有“作业日期”列………脑子短路了图片点击可在新窗口打开查看