dbGrid 에 자료를 보여주고..
특정 필드에서 값을 수정할때...
레코드별 합계를 계산할려고 하는데요..
Seq 점수
1 11
2 11
3 11
20 33
seq 20레코드에 col별 합계를 계산할때.
만일 2번째 레코드를 수정하였다면 컬럼별로 계산한 후 원래의 위치에 커서가 와 있어야 하는데 현재 위치를 잃어버리는 군요..
getBookMark, gotoBookMark, freeBookMark 를 사용해서 코딩을 했는데..
왜 BookMark가 자기의 위치를 읽어버리는지 정말 굼금..
getBookMark로 받는 값은 변화가 없는데..
레코드 탐색시 Map Address가 변동되어버리는걸까요..
참고로 탐색전. DisableControls, EnableControls.를 사용했습니당..
전문가님의 답변 바랍니당....
감사합니당..
> 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;