Q&A

  • DBGrid상에서 직접 입력하는 방법 어디 없나요?


DBGrid에 데이타를 입력할 때 저는 다른 입력창을 만들어 입력하도록 해놓았는데



델파이 Q&A를 뒤지다가 DBGrid상에서 직접 입력하는 방법이 있다는것을 알게되었는데



어떻게 해야 하는지 책을 찾아봐도 알 수 없어 고수님의 도움을 청합니다.



DBGrid 콤퍼넌트 와 Procedure 를 좀 자세하게 해주시면 고압겠나이다.



저는 완전 초보라 방법만 가르쳐 주시면 이해가 안되기 때문에 좀 자세히



알려주시면 결초보은 하겠나이다.



오늘도 초보자의 앞길에 등불이 되어주시는 고수님들의 노고에 깊이 감사드립니다.

2  COMMENTS
  • Profile
    뻐록이 2000.11.10 05:50
    아기코알라 wrote:

    >

    > DBGrid에 데이타를 입력할 때 저는 다른 입력창을 만들어 입력하도록 해놓았는데

    >

    > 델파이 Q&A를 뒤지다가 DBGrid상에서 직접 입력하는 방법이 있다는것을 알게되었는데

    >

    > 어떻게 해야 하는지 책을 찾아봐도 알 수 없어 고수님의 도움을 청합니다.

    >

    > DBGrid 콤퍼넌트 와 Procedure 를 좀 자세하게 해주시면 고압겠나이다.

    >

    > 저는 완전 초보라 방법만 가르쳐 주시면 이해가 안되기 때문에 좀 자세히

    >

    > 알려주시면 결초보은 하겠나이다.

    >

    > 오늘도 초보자의 앞길에 등불이 되어주시는 고수님들의 노고에 깊이 감사드립니다.















    이게 도움이 되길 바랍니다..

    이건 저번에 자료를 보다가 어떤 님이 올려 놓은글을 제가 가지고 있다가 지금 올립니다..

    작성하신 분께 감사 드리세요 저두 어느분인진 잘 모르지만~~~~~`



    1. Query의 cachedupdates프로퍼티를 true로 바꾸세요.

    //질문을 보니 현재 true로 되어 있는것 같네요.

    UpdateObject프로퍼티에 UpdateSQL을 연결하시고

    UpdateSQL의 내용을 설정하세요..

    2. 전역변수를 하나 만드세요..

    private

    { Private declarations }

    DataSetState : TDataSetState;

    public

    { Public declarations }

    end;//

    3. Qeury의 BeforeEditEvent와 BeforeInserEvent에 다음내용을 추가하세요

    DataSetState := DataSet.State;

    4. Query의 AfterPostEvent에 다음과 같이 넣어주세요..

    case( DataSetState )of

    dsEdit : UpdateSQL1.Apply(ukModify);

    dsInsert: UpdateSQL1.Apply(ukInsert);

    end;

    5. Delete에는 약간의 버그가 있습니다.

    그래서 편법으로 UpdateSQL의 DeleteSQL의 내용을 수정해야 합니다.

    조건에 보면 "필드명= :OLD_필드명"형식으로 되어있는것을

    "필드명 = :필드명" 형식으로 바꾸시고..

    BeforeDeleteEvent에 다음과 같이 넣어 주시면 됩니다..

    UpdateSQL1.Apply(ukDelete);



    위와 같이 설정하시고 실행하시면 될겁니다.

    도움이 되셨기를...



    즐코딩하세여

  • Profile
    권민호 2000.11.10 01:51
    아기코알라 wrote:

    >

    > DBGrid에 데이타를 입력할 때 저는 다른 입력창을 만들어 입력하도록 해놓았는데

    >

    > 델파이 Q&A를 뒤지다가 DBGrid상에서 직접 입력하는 방법이 있다는것을 알게되었는데

    >

    > 어떻게 해야 하는지 책을 찾아봐도 알 수 없어 고수님의 도움을 청합니다.

    >

    > DBGrid 콤퍼넌트 와 Procedure 를 좀 자세하게 해주시면 고압겠나이다.

    >

    > 저는 완전 초보라 방법만 가르쳐 주시면 이해가 안되기 때문에 좀 자세히

    >

    > 알려주시면 결초보은 하겠나이다.

    >

    > 오늘도 초보자의 앞길에 등불이 되어주시는 고수님들의 노고에 깊이 감사드립니다.



    테이블과 디비그리드를 연결하고 디비그리드의 옵션부분의 Edit를 True로 설정하여

    사용하면 디비그리드에 직접입력가능합니다.

    쿼리같은 경우는 디비그리드에 직접 입력할 수 없으나 updatesql이란 콤포넌트를

    사용하면 가능합니다.

    Query의 UpdateObject란 프로퍼티에 UpdateSql콤포넌트를 연결하고

    CachedUpdate란 부분을 True로 놓으면 테이블과 똑같이 사용가능합니다.

    다만 저장시

    Query1.Post;

    Query1.ApplyUpdates;

    라고 기술합니다.

    자세한것은 헬프나 다른 예제를 참고하십시요.