以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  跨表引用表达式执行不正确  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=22358)

--  作者:SZDVYE
--  发布时间:2012/8/9 23:56:00
--  跨表引用表达式执行不正确

狐狸爸爸,我的表达式执行不正确,请教如何修改?

问题一、"部门"列录入后,存档并重新打开,部门列又自动清空了,不知道为何?

问题二、2.JPG中,第1、2、3行工件金额引用混乱了。我是想分别实现为150,130,50

问题三、 在命令窗口出现这样1.JPG问题,错误产生的原因是什么?

问题四、报价表中,一个客户就要列8项行,要列的行太多了,能否指点方向,如何简化行数,修改表达式,达到同样自动引用目的?

 


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

 


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

 

程序如下:

 

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

[此贴子已经被作者于2012-8-11 20:01:35编辑过]

--  作者:wjl-se
--  发布时间:2012/8/10 14:47:00
--  

结算表和报价表应该有个对应关系,这样find才有意义,多对多的关系,find只会引用第一条纪录。

不过业务逻辑还是要自己判断,我也看不明白。

看看附件:

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


--  作者:SZDVYE
--  发布时间:2012/8/11 19:53:00
--  

1、第一个问题已经解决了,谢谢。

2、第二问题中,我是想用跨表引用的方式根据报价表,得出结算表相应的价格,应该是不用关联的啊。

    我在结算表的DataColChanged事件代码代码,但是结算表引用数据时却是错误的,我不知道代码哪里出错了。

    如果代码正确,结算表的工件列,第一行,第二行,第三行引用正确的数值应该为150,,130,50

    请帮忙看看是什么问题。

     代码如下:

Select Case e.DataCol.Name
    Case "客户","入出","收免","特殊","部门","完成","删除","退回"
        Dim dr As DataRow = e.DataRow
        Dim pr As DataRow
        If dr.IsNull("客户") Then
            dr("基准收费") = Nothing
            dr("超标收费") = Nothing
            dr("工件") = Nothing
            dr("检测") = Nothing
            dr("杂费") = Nothing
            dr("税率") = Nothing
        Else
            Dim filter As String
            filter = "客户 = \'" & dr("客户") & "\' And 入出 = \'" & dr("入出") & "\' And 收免 = \'" & dr("收免") & "\' And 特殊 = \'" & dr("特殊") & "\' And 部门 = \'" & dr("部门") & "\'"
            pr = DataTables("报价表").Find(filter)
            If pr IsNot Nothing And dr("完成") = 0 Then
                dr("工件") = pr("完成_工件")
                dr("基准收费") = pr("基准价")
                dr("超标收费") = pr("超标价")
                dr("检测") = pr("检测")
                dr("税率") = pr("税率")
            ElseIf pr IsNot Nothing And dr("删除") = 0 Then
                dr("工件") = pr("删除_工件")
                dr("基准收费") = pr("基准价")
                dr("超标收费") = pr("超标价")
                dr("检测") = pr("检测")
                dr("税率") = pr("税率")
            ElseIf pr IsNot Nothing And dr("退回") = 0 Then
                dr("工件") = pr("退回_工件")
                dr("基准收费") = pr("基准价")
                dr("超标收费") = pr("超标价")
                dr("检测") = pr("检测")
                dr("税率") = pr("税率")
            Else
                dr("工件") = 0
                dr("基准收费") = 0
                dr("超标收费") = 0
                dr("检测") = 0
                dr("税率") = 0
             End If
    End If
End Select

 

3、e. 是无法在命令窗口出现的。需要写在表的事件中。明白了,谢谢。

 

[此贴子已经被作者于2012-8-11 21:59:45编辑过]