以文本方式查看主题
- 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
|
-- 作者:青鸟
-- 发布时间:2016/8/14 2:53:00
--
问题2解决了,但1、3还是没有头绪,请大仙支持!
|
-- 作者:大红袍
-- 发布时间:2016/8/14 12:00:00
--
|
-- 作者:青鸟
-- 发布时间: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
|