Q&A

  • update SQL로 수정시..
Query.Edit
를 명시를 하고 ApplyUpdate 할때 Key Violation 오류가 떠버립니다.
물론 키로잡힌 필드의 값은 모두 넣어 줬구요...
아무래도 Edit가 아닌 Insert가 되는게 아닌지 모르겠네요...
이럴땐 상태를 체크해봐야하나요? 현제 State를?
2  COMMENTS
  • Profile
    김경록 2002.05.13 19:11
    일반적으로 UpdateSQL을 사용하게 되면..
    Query컴포넌트의 해당Event에 맞는 코딩을 하게 되어 있습니다..
    (물론 아시겠지만..   *^^*)

    예를 들면..
    AfterPost 이벤트에서는
    Query1.Database.ApplyUpdates([Query1]);

    만약 이렇게 되어 있는데도...
    Key Violation이 난다는것은..
    당연히 OnNewRecord 이벤트에서..
    Key Field에 해당값을 중복되게 넣기 때문일 것입니다..

    님께서는 Edit후 저장하실때 에러가 난다고 하니까..
    UpdateSQL의 Modify(Update)부분의 Query를 확인하시고..
    해당 Key Field의 Data를 중복되게 넣지 않았는지
    확인해 보시기 바랍니다..


  • Profile
    하얀까마귀 2002.05.13 18:37
    안녕하세요 하얀까마귀 입니다.

    말씀하신 내용으로는 잘 몰겠는데...

    말씀하신대로 State를 첵크해보시면 됩니다.

    edit 하신 경우에는 state = dsEdit 가 될테고 insert 하시면

    dsInsert가 되겠죠..

    콤포넌트의 소스를 보시면 잘 나와있고 그외에도 많은 상태값들이

    있습니다.

    TDataSetState = (dsInactive, dsBrowse, dsEdit, dsInsert, dsSetKey,
        dsCalcFields, dsFilter, dsNewValue, dsOldValue, dsCurValue, dsBlockRead,
        dsInternalCalc, dsOpening);

    참고하시길...

    그럼 즐거운시간 되세요.

    하얀까마귀