私は現在以下でテストしています:
- IB データベースを指す SQLConnection。
- 上記のものに設定された SQLConnection フィールドを持つ SQLDataset。
- (2) の SQLDataset を Dataset フィールド値として持つ DatasetProvider。
- (3) のプロバイダーを指す ProviderName フィールドを持つ ClientDataset。
次の方法 (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 に 1 つのレコードだけが入力されます。ただし、レコードを手動で編集する場合は、[投稿] をクリックし、次を使用して変更をコミットしてみてください。
MainDM.ClientDataset1.ApplyUpdates(0); // <<<<<<
「SQLDataset1: 読み取り専用データセットを変更できません」というメッセージが表示されます。
Provider と ClientDataset の ReadOnly プロパティを確認しましたが、SQL に結合がありません。
エラーの原因は何ですか?