Я сейчас тестирую с:
- SQLConnection, который указывает на базу данных IB.
- SQLDataset, для поля SQLConnection которого установлено значение, указанное выше.
- DatasetProvider, в котором значение SQLDataset в (2) является значением поля набора данных.
- ClientDataset с полем ProviderName, указывающим на провайдера в (3).
Я использую следующий метод (заимствованный у Алистера Кристи), чтобы получить данные ...
function TForm1.GetCurrEmployee(const IEmployeeID: integer): OleVariant;
const
SQLSELEMP = 'SELECT E.* FROM EMPLOYEE E WHERE E.EMPLOYEEID = %s';
begin
MainDM.SQLDataset1.CommandText := Format(SQLSELEMP, [Edit1.Text]);
Result := MainDM.DataSetProvider1.Data;
end;
Который заполняет DBGrid только одной записью. Однако, когда я вручную редактирую запись, нажимаю «Опубликовать», затем пытаюсь зафиксировать изменения, используя
MainDM.ClientDataset1.ApplyUpdates(0); // <<<<<<
Бомба с сообщением «SQLDataset1: невозможно изменить набор данных только для чтения».
Я проверил свойство ReadOnly провайдера и ClientDataset, и SQL не имеет соединений.
Что может быть причиной ошибки?