Создал таблицу из трех полей Name, Address, Balance. Создал запрос на выборку, набор данных и форму для вывода содержимого этой таблицы. На форме разместил DataGrid и три поля ввода. Все привязал к набору данных. Также сделал три кнопки btnAppend, btnPost и btnClick с такими обработчиками событий:
dlCustomer.Dataset.Append();
}
function btnPostOnClick(Control) {
dlCustomer.Dataset.Post();
}
function btnDeleteOnClick(Control) {
dlCustomer.Dataset.Delete();
}
function wnd_CustomerOnPrepare(Window) {
dlCustomer.Dataset.Open();
}
Обновление и удаление записей происходит нормально. Но при изменении одного поля происходит следующее: значение измененного поля в базу попадает, а все остальные поля этой становятся пустыми.
Как мне сделать так, чтобы другие поля не устанавливались в Null?
Нравится
Здравствуйте, Петр!
При редактировании датасета необходимо:
1. Установить указатель на текущую запись (либо отфильтровать)
2. Открыть датасет на чтение Dataset.Open();
3. Открыть датасет на запись Dataset.Edit();
4. Присвоить полю значение.
5. Записать в базу данных Dataset.Post()
Эта проблема возникает только если Update выполняется из Terrasoft Administrator. Для того, что бы обновления работало правильно, запустите созданное Вами окно с помощью параметра командной строки, например TSClient.exe /wnd=wnd_Customer.
Учтите что обычно в одном окне в Террасофт одновременно не производится и редактирование и отображение данных. Для этого отдельно создается окно реестра и редактирования.