0
Голосовать

Обновление данных в Dataset

Создано:

Создал таблицу из трех полей Name, Address, Balance. Создал запрос на выборку, набор данных и форму для вывода содержимого этой таблицы. На форме разместил DataGrid и три поля ввода. Все привязал к набору данных. Также сделал три кнопки btnAppend, btnPost и btnClick с такими обработчиками событий:

function btnAppendOnClick(Control) {
        dlCustomer.Dataset.Append();
}

function btnPostOnClick(Control) {
        dlCustomer.Dataset.Post();
}

function btnDeleteOnClick(Control) {
        dlCustomer.Dataset.Delete();
}

function wnd_CustomerOnPrepare(Window) {
        dlCustomer.Dataset.Open();
}

Обновление и удаление записей происходит нормально. Но при изменении одного поля происходит следующее: значение измененного поля в базу попадает, а все остальные поля этой становятся пустыми.
Как мне сделать так, чтобы другие поля не устанавливались в Null?

Комментарии

Alimova Anna

Здравствуйте, Петр!

При редактировании датасета необходимо:

1. Установить указатель на текущую запись (либо отфильтровать)
2. Открыть датасет на чтение Dataset.Open();
3. Открыть датасет на запись Dataset.Edit();
4. Присвоить полю значение.
5. Записать в базу данных Dataset.Post()

С уважением, Анна Алимова
Специалист II линии технической поддержки Terrasoft

Агутин Алексей

Эта проблема возникает только если Update выполняется из Terrasoft Administrator. Для того, что бы обновления работало правильно, запустите созданное Вами окно с помощью параметра командной строки, например TSClient.exe /wnd=wnd_Customer.

Учтите что обычно в одном окне в Террасофт одновременно не производится и редактирование и отображение данных. Для этого отдельно создается окно реестра и редактирования.