Q&A

  • SDAC 사용자분께 질문
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내장함수사용필드) 수정이 안되는게 문제입니다.
2  COMMENTS
  • Profile
    양용성 2008.05.22 21:20
    쿼리로 데이타를 수정하시려면 Keyfield 값이 있어야 합니다.
    이 값이 없으면 수정이 불가합니다.
    또한 Case 가 기타 Alias 를 사용하게 되면 수정이 안될수가 있습니다.
    만약 수정하고자 한다며 SQLInsert,SQLUpdate 쿼리문을 입력해 두시고 파라미터에
    값을 지정하면 됩니다.

    SQLGate 개발팀
    http://www.sqlgate.com

  • Profile
    초보임당 2008.05.23 05:47
    답변감사합니다..

    그런데 쿼리로 조회된 데이터를 그리드에서 수정 후 applyupdate 시에는 말씀 하신 부분을 적용시키면 됩니다.....하지만 제가 질문 드린건...쿼리로 조회된 데이터를 그리드 자체에서 수정이 안된다는 겁니다..

    델파이 자체의 database , query 컴퍼넌트 를 이용하거나 SqlConnection , SqlQuery  컴퍼넌트를 이용해서 테스트 하면 그리드 자체에서 수정도 잘되거든요..(동일한 쿼리로요..)
    그리드 자체 수정 후에 실 table 에 업데이트 하는 부분의 로직은 만들어져 있구요...(키값을 이용한 업데이트)

    만약 SDAC 쓰시고 계시다면..SDAC DEMO 실행해서  쿼리 컴퍼넌트를 테스트 해보시면 원인을 아실 수 있습니다.

    새로운 폼에 MSCONNECTION , MSQUERY, DATASOURCE , DBGRID 올려서 테스트 해보셔도...ㅎㅎ
    거기서 MSCONNECTION , MSQUERY 를 SqlConnection , SqlQuery  로 바꾸어서 테스트 해보시면
    제가 드린 질문의 요지를 아실 수 있을겁니다..

    이놈 때문에 미치겠네요...ODAC 에서는 잘돌던놈이....환장하겠습니다.