以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  代码问题  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=27001)

--  作者:mamasong
--  发布时间:2012/12/19 16:55:00
--  代码问题

我设置了两个表,销售信息表和销售汇总表

其中我想销售信息表中每次新增加一个合同时,销售汇总表都自动增加一行,然后客商名称和项目名彻骨,合同单价三列自动复制内容。我在销售信息表的

DataColChanged中设置如下代码:

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("合同单价")
        Else
            dr("项目名称") = e.DataRow("项目名称")
        End If

end select

新增行记录后,其他都正常,只是合同单价为什么显示为0 呢


--  作者:mamasong
--  发布时间:2012/12/19 16:57:00
--  
补充:是在合同信息表中新增航记录后,输入各项目内容,合同汇总表中,客商名称和项目名称都显示正常,只有合同单价不显示信息表中的数值,只显示零。不知何故?
--  作者:狐狸爸爸
--  发布时间:2012/12/19 17:08:00
--  

看看两个表的合同弹夹的列类型是否相同,别一个整数,一个小数。

 


--  作者:mamasong
--  发布时间:2012/12/20 8:28:00
--  

这个问题早就察看了,都为单精度小数,数据列,列设置一样啊。。。还是找不出原因来。。。


--  作者:mamasong
--  发布时间:2012/12/20 8:47: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("合同单价")
        Else
            dr("项目名称") = e.DataRow("项目名称")
        End If
    Case "客商名称","合同单价"
        Dim dr As DataRow = DataTables("销售_汇总").Find("项目名称 = \'" & e.oldvalue & "\'")
        If dr IsNot Nothing Then
            dr(e.DataCol.Name) = e.DataRow(e.DataCol.Name)
        End If
    Case "合同单价","合同数量"
        If e.DataRow.Isnull("合同单价") Or e.DataRow.Isnull("合同数量") Then
            e.DataRow("合同总额") = Nothing
        Else
            e.DataRow("合同总额") = e.DataRow("合同单价") * e.DataRow("合同数量")
        End If
End Select

这是全部的代码,有什么问题吗?


--  作者:lin_hailun
--  发布时间:2012/12/20 8:54:00
--  
 在datacolchanged事件里,用msgbox查看一下具体的值,你单给一段代码也看不出什么。
--  作者:Liuxinyu
--  发布时间:2012/12/20 9:17:00
--  

你好!

    我认为,你在增加新合同记录的时候,修改项目名称时,可能在汇总表中增加新记录,将单价复制到汇总表中,此时单价可能是零。当你修改单价时,并没更新单价列,只是更新了金额列。

 

供你参考。

 

下述代码中是无法更新单价列或数量列的信息

 

 Case "合同单价","合同数量"
If e.DataRow.Isnull("合同单价") Or e.DataRow.Isnull("合同数量") Then
e.DataRow("合同总额") = Nothing
Else
e.DataRow("合同总额") = e.DataRow("合同单价") * e.DataRow("合同数量")
End If


--  作者:mamasong
--  发布时间:2012/12/20 9:33:00
--  
恩,是这样,不是更新单价出现的问题,是新增的时候就总动在汇总表里面生成零了