sqlconnection -> sqlquery -> datasetprovider -> clientdataset -> datasource -> dbgrid 로 연결후 수정/삭제/입력 후 저장하는 샘플 제작중입니다.
sqlquery에 단일테이블 select 에 대해서는 잘 되는데 테이블 조인후 특정테이블의 값만 db에 반영하려고 하면 어떻게 해야 하는지요.
여기저기 검색한 결과
1. sqlquery의 필드에 대하여 Providerflag를 설정
2. datasetprovider의 ongettablename 이벤트에 수정할 테이블명 지정하고 applyupdate하면 될 것 같은데
에러메시지도 없고 db에 반영이 안됩니다.
//sqlquery의 sql문
select b.name,a.*
from table1 a,
table2 b
where a.key=b.key
//db반영
procedure TForm1.SaveButtonClick(Sender: TObject);
begin
if clientdataset1.ChangeCount>0 then
begin
if clientdataset1.active then
clientdataset1.CheckBrowseMode;
clientdataset1.ApplyUpdates(-1);
end;
end;
//ongettablename 이벤트
procedure TForm1.DataSetProvider1GetTableName(Sender: TObject; DataSet: TDataSet;
var TableName: WideString);
begin
TableName :='table1';
end;
위와 같은 소스인데 목적은 table1에 대한 수정/입력/삭제입니다.
updatesql처럼 DML문장을 제어할 수 있는 속성이나 이벤트가 어디 있을까요?
미리 감사드립니다.
|