Boa
Дата: 07.02.2006 12:17:06
Создал табличку, в ней несколько вычисляемых полей.
Когда все эти поля вычислены уже, хочу, чтоб в этих полях остались только значения, чтоб их можно было уже изменять.
Делаю так:
Private Sub itc_RemoveExpr(ByRef Table As DataTable)
Dim NewTable As DataTable = Table.Copy
Dim Row As DataRow
Dim Col As DataColumn
Dim AllCols As DataColumnCollection
Table.Clear()
For Each Col In Table.Columns
If Col.Expression <> "" Then
Col.Expression = ""
Col.ReadOnly = False
End If
Next
For Each Row In NewTable.Rows
Table.ImportRow(Row)
Next
End Sub
|
Затем она ругается
Object reference not set to an instance of an object.на строчках
if Not Convert.IsDBNull(PRow("Cost")) Then
If Convert.IsDBNull(NewRow("Cost")) Then
NewRow("Cost") = PRow("Cost")
Else
NewRow("Cost") += 1 ' Здесь ругается
End If
End If
|
Как же правильно то сделать?
Boa
Дата: 08.02.2006 15:36:41
Prow и NewRow - это строчки этой таблицы.
Поле Cost было вычисляемым, Expression стер, и тут делаю итог для этого поля.
Значение поля может быть Null, поэтому такие проверки.
Сейчас пока вышел из положения, путем удаления столбца и потом создаю новый.
Но тогда их порядок меняется...
Boa
Дата: 09.02.2006 10:47:43
Так проблема в том, что столбец cost существует.
Он был с Expression, которую я удалил.
И теперь хочу в этом столбце данные изменить руками.
В дебагере ItemArray для строки показывает все поля, Convert.IsDBNull с этим полем отрабатывает хорошо.
Но как только хочу в это поле записать значение - то ошибка.
Вопрос в том, как изменить процедуру удаления Expression из столбца.
Как писал выше, пока что просто удаляю такой столбец и добавляю новый с таким же именем. Но при этом порядок столбцов меняется, что не есть хорошо.
Может быть тогда кто-нибудь подскажет, как порядок столбцов поменять?
Заранее спасибо.