以文本方式查看主题

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

--  作者:mamasong
--  发布时间:2013/1/23 9:13: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.DataRow("项目名称") & "\'")
If dr IsNot Nothing Then
dr(e.DataCol.Name) = e.DataRow(e.DataCol.Name)
End If
End Select

 

大家帮忙看看这段代码有什么问题吗?问什么用录入窗口一输入项目名称,就会报错呢?


--  作者:lin_hailun
--  发布时间:2013/1/23 9:28:00
--  
 这段代码没有什么错误吧?

 看看是不是DataTables("销售_汇总")的datacolchanged代码出错了。

--  作者:mamasong
--  发布时间:2013/1/23 9:42:00
--  

并没有在汇总表的datacolchanged中写入任何代码啊?

本来我是要完成这样一个功能,就是,比如有三个表,汇总表 信息表 明细表1 

信息表是汇总表的父表 汇总表是明细表的父表

然后实现 信息表每增加一个新合同,汇总表中自动相应增加一行,在项目名称 客商名称和单价列 都自动复制信息表中的内容。

做了个信息表的录入窗口,保存时其他都没有问题,只是一输入项目名称就报错,显示运行出错。


--  作者:lin_hailun
--  发布时间:2013/1/23 9:45:00
--  
 显示运行错误,报什么错,截图看看。代码不会有什么问题的。
[此贴子已经被作者于2013-1-23 9:45:20编辑过]

--  作者:mamasong
--  发布时间:2013/1/23 9:48:00
--  
而且为什么已经按照项目名称建立了关联,在父表删除行的时候,子表没有响应的删除关联行呢,我选择的是单向关联
--  作者:mamasong
--  发布时间:2013/1/23 9:50:00
--  

运行错误:

Exception has been thrown by the target of an invocation.

显示详细信息:

错误所在事件:表,销售_信息,DataColChanged
详细错误信息:
System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. ---> System.Data.ReadOnlyException: Column \'合同单价\' is read only.
   at System.Data.DataRow.set_Item(DataColumn column, Object value)
   at System.Data.DataRow.set_Item(String columnName, Object value)
   at Foxtable.DataRow.set_Item(String O11l100100, Object Oll00)
   at UserCode.DataColChanged(DataColEventArgs e)
   --- End of inner exception stack trace ---
   at System.RuntimeMethodHandle._InvokeMethodFast(Object target, Object[] arguments, SignatureStruct& sig, MethodAttributes methodAttributes, RuntimeTypeHandle typeOwner)
   at System.RuntimeMethodHandle.InvokeMethodFast(Object target, Object[] arguments, Signature sig, MethodAttributes methodAttributes, RuntimeTypeHandle typeOwner)
   at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture, Boolean skipVisibilityChecks)
   at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)
   at Foxtable.DataTable.O1100l0O01l110O0l00Oll11(Object O0l0O0, DataColumnChangeEventArgs O)


--  作者:mamasong
--  发布时间:2013/1/23 9:56:00
--  

具体报错位置在信息表的datacolchanged里,也就是我最开始的那段代码,可是找不到哪里有错误啊,很奇怪啊


--  作者:mamasong
--  发布时间:2013/1/23 9:58:00
--  

这个跟在没有数据行的表 的输入窗口新增行  有关系吗?


--  作者:lin_hailun
--  发布时间:2013/1/23 10:00:00
--  
 你的合同单价是表达式列,不能,或者不需要给给它赋值的。
--  作者:mamasong
--  发布时间:2013/1/23 10:02:00
--  
图片点击可在新窗口打开查看