Обновление одного столбца в таблице данных в памяти
У меня есть datatable в памяти, который имеет много столбцов, которые я рисую из разных таблиц в базе данных SQL. Я мог бы сделать это с помощью внутренних или левых соединений, но накладные расходы огромны, Когда кто-то не хочет все столбцы, поэтому я использую datatable (без участия набора данных). Все работает замечательно, пока я не хочу обновить одну из колонок.
Я погуглил ключевые слова для своего вопроса, а также посмотрел на проект кода, но я не вижу, что мне нужно (если только он не похоронен среди других подобных вопросов).
Код, который я использую, приведен ниже, заимствован с веб-сайта Microsoft, хотя он действительно ожидает, что у него будет набор данных, пропуская эту часть, IDE говорит, что все в порядке, пока я действительно не запущу его.
Что я уже пробовал:
Dim MyRow() As Data.DataRow MyRow = Facility_Table.Select("FacilityNameRef=123") MyRow(0)("Locked") = 0
(ссылка, помещенная здесь, является просто фиктивной, но я знаю, что ссылка существует в datatable, как только она заполнена, и я могу видеть это из datagridview, который я привязал к datatable.
CHill60
"но накладные расходы огромны, Когда кто - то не хочет все столбцы" - тогда не возвращайте все столбцы-это моя первая мысль.
Вы говорите, что все в порядке, пока вы не запустите его, но вы не сказали, в чем проблема на самом деле. Действительно ли MyRow содержит что-либо и не должно ли это быть MyRow("Locked") = 0 (предполагая, что у вас есть столбец с именем Locked)
Member 12561559
используя свой код, я получаю: ссылка на объект не установлена на экземпляр объекта - Я знаю, что объект существует, поскольку я его заполнил. хотя, возможно, где - то на этом пути я скучаю.
Я пытаюсь обновить datatable - из другой формы,
facility_table datatable объявляется в одной форме следующим образом:
Friend Facility_Table Как Новый DataTable
и я обновляю его с помощью (например):
Dim MyRow() As Data.DataRow
MyRow = Form2.Facility_Table.Select("FacilityNameRef=123")
MyRow(0)("Заблокировано") = 0
и используя только MyRow("Locked") = 0 в соответствии с вашей рекомендацией, я получаю красное подчеркивание в IDE, говорящее: "integer не может быть преобразован в datarow)