dbexpress 를 처음사용해보고있습니다.
sqlconnection 과 simpledataset 을 써서 mysql 자료를 열어 조회/수정저장 잘됩니다.
그런데 조인된 쿼리의 자료를 수정하고 applyupdates 하면 오류가 뜹니다.
Unable to resolve records. Table name not found.
아마도 어느 table 을 작업해야하는지 지정되지 않아서 그런것 같은데...
그것을 지정하는 방법을 알고싶습니다.
simpledataset 말고 다른걸 써야할 듯 싶은데...
clientdataset 과 datasetprovider 를사용하여 작업하면 같은메세지가 나오고 dataprovider 의
resolve todataset 을 변경하면 cannot modify a read-only dataset 이란 메세지가 나옵니다.
여러가지 해보고는 있습니다만... 조인된 자료의 수정을 위한 dbexpress 사용법 아시는분 부탁드리겠습니다.
델파이 2010 enterprise 에 mysql 5.1 쓰고 있습니다.
델파이에서 제공되는 DataBase Connection 컴퍼넌트 들중..조인된 필드를 수정 할 수 있는 컴퍼넌트가 SqlConnection 밖에 없더군요.. BDE도 가능하고요..
SqlConnection - Query - DataSetProvider - ClientDataSet - DataSource - DBGrid 이렇게 연결하시고...
DataSetProvider 의 프로퍼티중에 Option - poAllowCommandText 를 True 로하시고
with ClientDataSet do
begin
Close;
CommandText := 'SELECT FIELD1 , FIELD2 FROM TABLENAME ';
Open;
if IsEmpty then 메세지처리...;
end;
요렇게 하신다음 수정하신 후 저장 이벤트에서
if ClientDataSet .ApplyUpdates(0) > 0 then Exit;
하시면 됩니다..
뭐 상세 에러 처리는 하시면서 하시고요... 일단 이렇게 테스트 해보시면...ㅎㅎ
조인된 필드를 수정 시 필요한 DataBase Connection 컴퍼넌트들이 상용도 많은데...이전버전에서는 안되는 놈들이...
옵션이 생겼더라고요..자체 쿼리 컴퍼넌트에.. ㅎㅎ
UniDAC , SDAC 등.... 그런데 ODAC 는 이전버전도 문제 없더라고요...쩝...