2009-06-04 84 views
0

当用于SELECT的SQL语句的计算列作为返回字段之一时,避免使用SqlDataAdapter/SqlCommandbuilder执行INSERT和UPDATES错误的正确方法是什么?SqlCommandBuilder和SQL Server计算列 - 错误

我现在得到错误“数量无法修改,因为它是计算列或UNION运算符的结果”。

UPDATE: 我用这样的查询固定的问题:

SELECT *, PercentRating * 500 AS CoreValue FROM ValueListings 

而且开沟计算列。 现在,它的工作。 SqlCommandBuilder是如何实现的到不是将CoreValue字段构建到UPDATE和INSERT语句中?有人知道这是如何在内部工作?

+0

与修复好消息,羞辱你使用可怕的选择星标! – 2009-06-22 19:40:55

回答

0

如果您可以避免使用*,它可以在以后节省您的麻烦。使用*如果您更改架构,您的代码可能会中断。如果命名字段,你很好。

1

用句子:

SELECT * FROM ValueListings

然后填写DataTable之后,添加计算的列到它:

Dim Dt as new DataTable 
    Da.Fill(Dt) 
    Dt.columns.add("CoreValue", GetType(Double), "PercentRating * 500")