Q&A

  • UpdatePending을 쓰는 방법은?
dbedit와 dbgrid를 쓰고 수정이나 insert는 dbedit에서만 하고 있습니다.

어떤 record를 수정하거나 삽입한후 exit(close)로 나갈때 건드린 data가 있으면

'저장하시겠수?'라는 메세지를 보여주고 싶은데 UpdatePending이 안되네여.

사용법 좀 갈쳐주세요.

1  COMMENTS
  • Profile
    이재식 1999.11.13 07:23
    Del초보 wrote:

    > dbedit와 dbgrid를 쓰고 수정이나 insert는 dbedit에서만 하고 있습니다.

    > 어떤 record를 수정하거나 삽입한후 exit(close)로 나갈때 건드린 data가 있으면

    > '저장하시겠수?'라는 메세지를 보여주고 싶은데 UpdatePending이 안되네여.

    > 사용법 좀 갈쳐주세요.



    이재식 Wrote :

    안녕하십니까?



    위 기능은 일단 간단히 2가지 방법이 있습니다.

    하나는 RequestLive를 true로 하시고,

    Edit내지 Insert(or Append)를 써서 작업을 하시는 거죠.

    저장을 누르면 Post를 하는거고요,

    그런데, 사용자가 입력 또는 수정을 하다가 저장을 안하고

    그냥 종료를 하면 테이블은 여전히 state가 활성상태라서

    종료버튼 클릭시 이렇게 판단하시면 됩니다.

    if (Table1.State = dsEdit) or (Table1.State = dsInsert) then

    begin

    메세지 출력 ;

    ok라면

    Table1.Post ;

    end ;

    Close ;

    이렇게 말입니다.



    그런데, 이것은 단일처리니까 좀 불편하죠.

    그래서, UpdateSQL과 CachedUpdates속성을 쓰는 것입니다.

    즉, 사용자가 입력 내지 수정을 하고

    저장 버튼을 누르면 Table1.ApplyUpdates; Table1.CommitUpdates를 해서

    저장을 하는거죠.

    그런데, 사용자가 수정 내지 입력을 하고서 저장을 하지않고

    그냥 실수로 종료버튼을 누르면 이때는 이렇게 합니다.

    if Table1.UpdatesPending = true then

    begin

    메시지 출력 ;

    ok 버튼을 눌렀다면,

    Query1.ApplyUpdates ;

    Query1.CommitUpdates ;

    end ;

    Close ;



    이렇게 하시면 됩니다.