2013-08-13 3 views
1

D5 프로그램을 한 번 실행하면 "잘못된 북마크"오류가 발생합니다. 오류 메시지 대화 상자에서 "확인"을 클릭하면 시스템이 정상적으로 작동합니다.모든 DataSet 책갈피 지우기

이 응용 프로그램에는 약 20 개의 TDBGrid가 있고 두드러진 지점의 모든 사용자는 책갈피를 지우려면 "지우기"가 있습니다. 17 개의 DataSet이 있습니다.

매우 드문 것으로, 사용자가 종료하기 직전에 자신의 잘못이 아닌 것으로 판단하여 문제를 찾고 해결하기가 매우 어렵습니다.

어쨌든 시작시 모든 데이터 세트에서 모든 책갈피를 대량으로 지울 수 있습니까?

북마크가 "열기/닫기"에서 지워지고 시작시 모든 데이터 세트가 열리기로되어 있다는 것을 여기서 읽었습니다.

If Table1.Active then Table1.Close; // They should never be Active but... 
Table.Open; 

의견이 있으십니까?

감사합니다.

+0

책갈피는 지점을 레코드에 연결하는 데 사용되는 메모리 구조입니다. 이들은 영구적이지 않으므로 실제로 데이터 세트가 닫힐 때마다 모두 지워집니다. 레코드가 삭제 될 때 여전히 북마크가 만들어져 데이터 세트가 해당 레코드에 대한 잘못된 참조를 보관한다는 것이 문제가 아닌지 의심 스럽습니다. 이전 버전의 Delphi에서는 프로그래머가 TDataset.FreeBookmark를 호출하여 북마크를 삭제할 책임이 있습니다. 또한 프로그래머는 데이터 세트에서 레코드를 삭제하기 전에 레코드에 북마크를 배치해야합니다. – AlexSC

+0

@AlexSC : 실제로. D5 OLH의 "표시 및 레코드로 돌아 가기"는 데이터 집합이 닫힐 때 유효하지 않게됩니다. 이력서, OP가 그 후에 기록으로 돌아가고 싶다면, 독특한 열쇠를 통해 그것을 얻는 것이 더 안전합니다. – MartynA

답변

2

TDataSet의 북마크를 일괄 삭제할 수있는 방법이 없습니다. 당신은 하나씩 그것을 풀어 줘야합니다.

사이드 노트 : 북마크를 사용할 때 TDataset의 변경 사항 (삽입, 업데이트 또는 삭제)이 끝난 후 북마크가 더 이상 유효하지 않은 경우 (종종 작동하지만 종종 공식적으로 날짜 및 새로 고침해야 함).