私は現在でテストしてい:は、Delphi ClientDataSetの読み取り専用
- IBデータベースの方に指しているのSQLConnectionを。
- SQLConnectionフィールドに上記の値が設定されているSQLDataSetです。
- Datasetフィールド値として(2)にSQLDatasetを持つDatasetProvider。
- ClientDataSet(3)のプロバイダを指すProviderNameフィールドを持つClientDataSet。
私は...ただ一つのレコードでのDBGridを移入
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;
データを取得する(アリスター・クリスティから借りた)次のメソッドを使用します。私は手動でレコードを編集するときしかし、ポストをクリックして、そのメッセージで、
MainDM.ClientDataset1.ApplyUpdates(0); // <<<<<<
それ爆弾を使用して、変更をコミットしよう「SQLDataset1:読み取り専用のデータセットを変更することはできません。」
私はプロバイダとClientDatasetのReadOnlyプロパティをチェックしましたが、SQLには結合がありません。
このエラーの原因は何ですか?
どのようにClientDataSetを開きますか? GetCurrEmployeeメソッドは、SQLDataSetのみを使用します。 – mjn
mjustinに応答して、DataSetProviderのDataプロパティがClientDataSetに割り当てられると、ClientDataSetがアクティブになります(Dataプロパティに含まれるデータに加えてメタデータが追加されます)。アクティブなClientDataSetが開きます。 –