我目前正在测试:
- 指向 IB 数据库的 SQLConnection。
- 将 SQLConnection 字段设置为上述字段的 SQLDataset。
- 将 (2) 中的 SQLDataset 作为其 Dataset 字段值的 DatasetProvider。
- 一个 ClientDataset,其中 ProviderName 字段指向 (3) 中的提供者。
我使用以下方法(从 Alister Christie 借来的)来获取数据...
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:无法修改只读数据集”。
我检查了 Provider 和 ClientDataset 的 ReadOnly 属性,并且 SQL 没有连接。
什么可能导致错误?