以文本方式查看主题

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

--  作者:青鸟
--  发布时间:2016/8/14 0:48:00
--  [求助]

整了一天都不行,麻烦大仙帮忙看看,有三个问题。

1、刚打开程序就进入“订单录入”窗口,按"增加商品"按钮后,出现如下错误提示:

     .NET Framework 版本:2.0.50727.8689
     Foxtable 版本:2016.6.26.1
     错误所在事件:表,订单明细,DataColChanged
     详细错误信息:
    调用的目标发生了异常。
    未将对象引用设置到对象的实例。

2、上述情况下依然能录入,但 "运费支付方式" = "到付" 或 "免邮" 时,表格能正常计算,= "垫付" 时,表不能正常计算;

3、当关闭“订单录入”窗口,又再次进入“订单录入”窗口录入时,点击 “新增商品”,出现如下错误提示:

   


此主题相关图片如下:qq截图20160814004551.png
按此在新窗口浏览图片

 

 

 


 

 下载信息  [文件大小:   下载次数: ]
点击浏览该文件:sr.rar


--  作者:青鸟
--  发布时间:2016/8/14 2:53:00
--  
问题2解决了,但1、3还是没有头绪,请大仙支持!
--  作者:大红袍
--  发布时间:2016/8/14 12:00:00
--  

 

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


--  作者:青鸟
--  发布时间:2016/8/14 12:01:00
--  
请大仙帮忙看看啊,谢谢
--  作者:大红袍
--  发布时间:2016/8/14 13:19:00
--  
看3楼
--  作者:青鸟
--  发布时间:2016/8/14 13:49:00
--  

追问:

 

先谢谢大红袍!

你帮忙改的我看了,录入没问题,但计算不满足要。我把 Table_订单明细 的 DataColChanged 代码改了,如下,前面的两个问题都解决了,但第3个问题还是存在,就是退出订单录入窗口,再次进入后,点击商品ID列录入商品信息时,提示:“无法访问已释放的对象”,我实在不知道是哪个对象释放了,是怎么被释放的??麻烦再看看

If Forms("订单录入").Opened Then
   Dim yfzf As String \'运费支付方式
\'msgbox("这里")
   yfzf = Forms("订单录入").Controls("ComboBox1").value
\'msgbox(yfzf)
   Dim dz As String = forms("订单录入").controls("TextBox5").text \'地域
\'msgbox(dz)
   Dim yf As Single \'运费
   Dim dr As DataRow
   Dim dr1 As Row =  Tables("订单.订单明细").Current
   Dim dr2 As DataRow

   Select Case yfzf
          Case "到付"
               If e.DataCol.Name = "数量" Then \'如果是数量列的内容变动
                  dr2 = DataTables("单价").Find("商品ID =\'" & dr1("商品ID") & "\'")
                  dr1("运费单价") = 0
                  dr1("合价") = dr1("数量") * dr1("单价")
                  dr1("成本") = dr1("数量") * dr2("代理单价")
                  dr1("结算合价") = dr1("数量") * dr2("进货单价")
               End If
          Case "免邮"
               If e.DataCol.Name = "数量" Then \'如果是数量列的内容变动
                  dr2 = DataTables("单价").Find("商品ID =\'" & dr1("商品ID") & "\'")
                  If dz IsNot Nothing Then
                     dr = DataTables("地域及运费").Find("市县 =\'" & dz & "\'")
                     dr1("运费单价") = dr("运费")
                  End If
                  dr1("合价") = dr1("数量") * dr1("单价") - dr1("数量") * dr1("运费单价")
                  dr1("成本") = dr1("数量") * dr2("代理单价") - dr1("数量") * dr1("运费单价")
                  dr1("结算合价") = dr1("数量") * dr2("进货单价") + dr1("数量") * dr1("运费单价")
               End If
         Case "寄付"
              If e.DataCol.Name = "数量" Then \'如果是数量列的内容变动
                  dr2 = DataTables("单价").Find("商品ID =\'" & dr1("商品ID") & "\'")
                  If dz IsNot Nothing Then
                     dr = DataTables("地域及运费").Find("市县 =\'" & dz & "\'")
                     dr1("运费单价") = dr("运费")
                  End If
                  dr1("合价") = dr1("数量") * dr1("单价") + dr1("数量") * dr1("运费单价")
                  dr1("成本") = dr1("数量") * dr2("代理单价") + dr1("数量") * dr1("运费单价")
                  dr1("结算合价") = dr1("数量") * dr2("进货单价") + dr1("数量") * dr1("运费单价")
              End If
   End Select
End If

 

 


--  作者:青鸟
--  发布时间:2016/8/14 14:11:00
--  

追问:

我看你的代码后,把6楼的代码作了如下改动:

1、把 Dim dr1 As DataRow = Tables("订单.订单明细").Current  改为 Dim dr1 As DataRow = e.DataRow

2、把全部的 If e.DataCol.Name = "数量" Then …… End If 去掉

出现:

1、增加商品时,调用目标发生异常

2、再次进入窗口录入时,无法访问已释放的对象


--  作者:青鸟
--  发布时间:2016/8/14 14:20:00
--  
谢谢大红袍,弄清楚了,是再次打开窗口后需要写AfterLoad代码,都好了,再次感谢
--  作者:大红袍
--  发布时间:2016/8/14 16:48:00
--  

If Forms("订单录入").Opened Then
    Dim yfzf As String \'运费支付方式
   
    yfzf = Forms("订单录入").Controls("ComboBox1").value
   
    Dim dz As String = forms("订单录入").controls("TextBox5").text \'地域
    Dim yf As Single \'运费
    Dim dr As DataRow
    Dim dr1 As DataRow = e.DataRow
    Dim dr2 As DataRow
   
    Select Case yfzf
        Case "到付"
            If e.DataCol.Name = "数量" Then \'如果是数量列的内容变动
                dr2 = DataTables("单价").Find("商品ID =\'" & dr1("商品ID") & "\'")
                If dr2 IsNot Nothing Then
                    dr1("运费单价") = 0
                    dr1("合价") = dr1("数量") * dr1("单价")
                    dr1("成本") = dr1("数量") * dr2("代理单价")
                    dr1("结算合价") = dr1("数量") * dr2("进货单价")
                end if
            End If
        Case "免邮"
            If e.DataCol.Name = "数量" Then \'如果是数量列的内容变动
                dr2 = DataTables("单价").Find("商品ID =\'" & dr1("商品ID") & "\'")
                If dz IsNot Nothing Then
                    dr = DataTables("地域及运费").Find("市县 =\'" & dz & "\'")
                    dr1("运费单价") = dr("运费")
                End If
                dr1("合价") = dr1("数量") * dr1("单价") - dr1("数量") * dr1("运费单价")
                dr1("成本") = dr1("数量") * dr2("代理单价") - dr1("数量") * dr1("运费单价")
                dr1("结算合价") = dr1("数量") * dr2("进货单价") + dr1("数量") * dr1("运费单价")
            End If
        Case "寄付"
            If e.DataCol.Name = "数量" Then \'如果是数量列的内容变动
                dr2 = DataTables("单价").Find("商品ID =\'" & dr1("商品ID") & "\'")
                if dr2 isNot Nothing then
                    If dz IsNot Nothing Then
                        dr = DataTables("地域及运费").Find("市县 =\'" & dz & "\'")
                        dr1("运费单价") = dr("运费")
                    End If
                    dr1("合价") = dr1("数量") * dr1("单价") + dr1("数量") * dr1("运费单价")
                    dr1("成本") = dr1("数量") * dr2("代理单价") + dr1("数量") * dr1("运费单价")
                    dr1("结算合价") = dr1("数量") * dr2("进货单价") + dr1("数量") * dr1("运费单价")
                end if
            End If
    End Select
End If