나는 현재와 테스트입니다 : IB를 데이터베이스으로 지적되고델파이 ClientDataset의 읽기 전용
- 경우 SQLConnection.
- SQLConnection 필드가 위의 값으로 설정된 SQLDataset입니다.
- 데이터 집합 필드 값으로 (2)에 SQLDataset이있는 DatasetProvider입니다.
- (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이 열려 있습니다. –