Q&A

  • bookmark 가 잘 안 되네요..
dbGrid 에 자료를 보여주고..

특정 필드에서 값을 수정할때...

레코드별 합계를 계산할려고 하는데요..

Seq 점수

1 11

2 11

3 11



20 33



seq 20레코드에 col별 합계를 계산할때.

만일 2번째 레코드를 수정하였다면 컬럼별로 계산한 후 원래의 위치에 커서가 와 있어야 하는데 현재 위치를 잃어버리는 군요..

getBookMark, gotoBookMark, freeBookMark 를 사용해서 코딩을 했는데..

왜 BookMark가 자기의 위치를 읽어버리는지 정말 굼금..



getBookMark로 받는 값은 변화가 없는데..

레코드 탐색시 Map Address가 변동되어버리는걸까요..

참고로 탐색전. DisableControls, EnableControls.를 사용했습니당..



전문가님의 답변 바랍니당....



감사합니당..



1  COMMENTS
  • Profile
    구창민 1999.07.01 09:10
    정근수 께서 말씀하시기를...

    > dbGrid 에 자료를 보여주고..

    > 특정 필드에서 값을 수정할때...

    > 레코드별 합계를 계산할려고 하는데요..

    > Seq 점수

    > 1 11

    > 2 11

    > 3 11

    >

    > 20 33

    >

    > seq 20레코드에 col별 합계를 계산할때.

    > 만일 2번째 레코드를 수정하였다면 컬럼별로 계산한 후 원래의 위치에 커서가 와 있어야 하는데 현재 위치를 잃어버리는 군요..

    > getBookMark, gotoBookMark, freeBookMark 를 사용해서 코딩을 했는데..

    > 왜 BookMark가 자기의 위치를 읽어버리는지 정말 굼금..

    >

    > getBookMark로 받는 값은 변화가 없는데..

    > 레코드 탐색시 Map Address가 변동되어버리는걸까요..

    > 참고로 탐색전. DisableControls, EnableControls.를 사용했습니당..

    >

    > 전문가님의 답변 바랍니당....

    >

    > 감사합니당..

    >

    정근수님 안녕하세요?

    아래는 DBgrid에서 수정후 다시 그 위치로 가는 팁입니다.

    참조하셔서 즐거운 프로그래밍 되시길 바랍니다~



    예) tbl1: TTable; // 수정하는 테이블

    // fielld 구성 : ID - 이름, name - 성명, tel - 전화

    // ID : Primary Key (Unique)

    qry1: TQuery; // DBGrid(dbgrd1)와 연결된 질의 - ID, name, tel 표시



    dbgrd1: TDBGrid; // 화면상의 표시 그리드



    edit_id,edit_name,edit_tel: TEdit; // 화면상의 입력 박스



    Procedure TForm1.rcdedit(Sender: TObject); // 레코드 수정 프로시져

    begin

    If tbl1.Locate('id', edit_id.Text, [LoPartialKey]) = True then

    // id 값이 있는지 확인

    tbl1.edit // id값이 있으면 테이블내의 그 위치로 찾아가고,

    // 수정모드로 설정

    else

    begin

    tbl1.append; // id값이 없으면 테이블내의 맨끝으로 위치를 지정,

    // 추가모드로 설정

    tbl1.FieldByName('id').AsString := edit_id.Text;

    // ID값 입력

    end;

    tbl1.FieldByName('name').AsString := edit_name.Text;//name 입력/수정

    tbl1.FieldByName('tel').AsString := edit_tel.Text; //tel 입력/수정 tbl1.post; // 레코드 추가/수정



    qry1.close;

    qry1.open;

    // 질의의 재조회

    qry1.Locate('id',edit_id.Text,[LoPartialKey]);

    // 질의내 수정 또는 추가된 레코드의 위치로 이동

    end;