SDAC (SQL Server Data Access Components)를 사용중입니다.
사용 컴퍼넌트 MSCONNECTION , MSQUERY , DATASOURCE , DBGRID
문제점 : 쿼리 시 필드값에 DB내장함수(MAX, MIN ,ISNULL , CASE 등) 을 쓰게 되면 그 필드만 자동으로
READONLY 속성 로 데이타가 반환되어 그리드에서 데이타 수정이 안됩니다...
쿼리 한 데이터를 그리드에서 수정이 되어 야 하는데...안되네요..
당연히 그리드나 QUERY 의 READONLY 속성은 FALSE 로 되어 있구요...
혹시 몰라서 같은 쿼리를 SQLCONNCTION , SQLQUERY 를 이용 테스트 해봤는데...
전혀 이상없이 수정도 잘되고 아무런 제약없이 잘됩니다...
쿼리라야 해봤자 아주 간단하게 테스트 해도 됩니다.. 필드에 CASE 문만 써도 그 필드는 그리드에서 수정이
안되네요...이게 버그인건지 제가 모르는 방법이 있는건지..답답합니다.
테스트는 SDAC DEMO 프로그램 실행 후 왼쪽 메뉴트리에서 QUERY 를 선택해서 간단한 쿼리를 해보면 바로
알수 있습니다..
환장하겠네요...CRLAB 사로 질문했더니만 DATASET 의 READONLY 속성을 FALSE 해라...라는 어처구니 없는 답변만 들었습니다....기본적인 속성은 셋팅되어 있습니다...
기존 DATABASE , QUERY 컴퍼넌트를 이용해서 테스트 해봐도 잘됩니다..
유독 SDAC 안의 MSQUERY 가 문제인듯...
실제운영은 그리드의 데이타를 수정한 후 다른 데이타셋을 오픈해서 그 데이타셋으로 수정된데이타를 옮긴 후
APPLYUPDATE 합니다...
문제는 조회된 그리드의 특정필드가(DB내장함수사용필드) 수정이 안되는게 문제입니다.
이 값이 없으면 수정이 불가합니다.
또한 Case 가 기타 Alias 를 사용하게 되면 수정이 안될수가 있습니다.
만약 수정하고자 한다며 SQLInsert,SQLUpdate 쿼리문을 입력해 두시고 파라미터에
값을 지정하면 됩니다.
SQLGate 개발팀
http://www.sqlgate.com