Обновление данных в 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?

Нравится

2 комментария

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

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

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

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

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

Показать все комментарии