[求救]dataColumn中设置了expression出错!!!!!!!!!!!分不够就加哈~_~
在加载表后,设置某列的expression
例如:
table1.columns["extendedprice"].expression="unitPrice * quantity";
然后在重新加载或update时,出错。
出错信息:
来自SourceColumn"ExtendedPrice"的列映射失败,
原因在于DataColumn"extendedPrice"是计算所得的列。
而这个ExtendedPrice是表中实际存在的列,希望能自动计算,请问该如何更新(update)呢?
问题点数:30、回复次数:12Top
1 楼usersmj(狼之舞)回复于 2005-04-03 10:26:18 得分 0
高手们帮帮忙呀Top
2 楼ofei(nop)回复于 2005-04-03 18:28:27 得分 5
把这个表达式放到数据库表中
不需要去更新此字段
数据库会自动更新Top
3 楼hamadou(闵峰--为了理想而奋斗)回复于 2005-04-04 08:59:26 得分 10
1。可以使用楼上的方法在数据库中用语句解决,但每次修改数据后一定要重新填充,否则数据不会跟着变化。
2。也可以在相应的列的textbox中使用委托事件,当unitPrice 或者 quantity列的数据被修改,光标离开textbox的时候,该列extendedprice的数据改变。最后还是要进行update。这个时候就不要使用计算列了(即便它是真正的列,但设置了expression后,还是被认定为计算列)Top
4 楼usersmj(狼之舞)回复于 2005-04-04 21:04:23 得分 0
To: hamadou(闵峰)
请问在
2中后面如何取消expression,初学,请多多指教,谢谢Top
5 楼usersmj(狼之舞)回复于 2005-04-04 23:15:11 得分 0
原题如下:
表tbname 中有A、B、 C三字段,其中C=A+B
填充到Datagrid1中(可以支动态改更A、B,更改后计算出C)
代码如下:
Private Sub FrmFinance_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Try
Me.OleDbConnection1.Open()
Try
Me.ObjDataSet.tbname.Clear()
Me.Adapter1.Fill(Me.ObjDataSet, "tbname")
Catch ex As Exception
MessageBox.Show(ex.Message)
End Try
Catch ex As Exception
MessageBox.Show("数据连接出错,请与管理员联系")
Finally
Me.OleDbConnection1.Close()
End Try
'
Me.ObjDataSet.tbname.columns["C"].expression="A+B";
End Sub
出错:
在重新加载或update时,出错。
出错信息:
来自SourceColumn"ExtendedPrice"的列映射失败,
原因在于DataColumn"extendedPrice"是计算所得的列。
Top
6 楼usersmj(狼之舞)回复于 2005-04-04 23:19:20 得分 0
上面出错部分打错了,是
出错:
在重新加载或update时,出错。
出错信息:
来自SourceColumn "C"的列映射失败,
原因在于DataColumn "C"是计算所得的列。Top
7 楼hamadou(闵峰--为了理想而奋斗)回复于 2005-04-05 08:15:55 得分 10
我的意思就是不使用计算表达式,在你将unitPrice或 quantity列的值改变时,相应的textbox的Validating事件或validated事件来将他们的乘积赋给extendedprice。要做相应的事件关联。Top
8 楼weiljj()回复于 2005-04-05 08:36:54 得分 5
ExtendedPrice是表中实际存在的列,希望能自动计算,那你不如在那個表中設trigger不更方便?Top
9 楼usersmj(狼之舞)回复于 2005-04-05 19:27:36 得分 0
请问如何在相应的列的textbox中使用委托事件,能否改一段代码,谢谢
初学,劳驾了哈Top
10 楼usersmj(狼之舞)回复于 2005-05-10 10:56:52 得分 0
天啦,求命呀,怎么到现在还没人帮忙给我指指路呀
大哥大姐叔叔阿姨弟弟妹妹们帮帮忙三Top
11 楼usersmj(狼之舞)回复于 2005-05-30 14:35:54 得分 0
唉,还是结了吧Top
12 楼hamadou(闵峰--为了理想而奋斗)回复于 2005-05-30 14:41:23 得分 0
使用表样式时
dim c1 as new datagridtextboxcolumn()
c.mappingname="column_name"
addhandler c1.textbox.validated ,addressof mytextboxvalidated()
然后在mytextboxvalidated事件里写代码做刷新,写好后要refresh相应的dataadapter控件。
不过
看过篇文章,说自动刷新的方法没有太好的。
Top




