=> 여러필드를 키로한 중복check를 해야 하는데, 에러가 납니다.
조언부탁드릴께요...
-> 아래의 내용은 두 테이블을 Display하고, 한테이블에서 레코드를 멀티선택해서
다른 테이블에 중복체크를 하고 추가시키는 내용입니다.
//=====================================================
//함수명 : ButtonAplcClick
//내 용 : Recall신청 버튼 클릭시 Insert버튼 클릭
//인 수 : 없음
//결과값 : 없음
//=====================================================
procedure TFormBL1A9020.ButtonAplcClick(Sender: TObject);
Var
TempBookmark : TBookmarkList;
i : Integer;
DupCount: Integer; //중복된 자료갯수
Str1, Str2, Str3 : String; //키값저장
begin
inherited;
dbgTelcv.DataSource.DataSet.DisableControls;
DupCount := 0;
With dbgTelcv.SelectedRows Do
Begin
If Count > 0 Then
Begin
TempBookmark := dbgTelcv.DataSource.DataSet.GetBookmark;
For i := 0 To Count - 1 Do
Begin
If CurrentRowSelected = True Then
Begin
Str1 := tdsAplcSTRING1.AsString; //자료원천
Str2 := tdsAplcSTRING2.AsString; //과금일련번호
Str3 := tdsAplcSTRING3.AsString; //통화일자
//===================================
//에러나는 부분입니다.
//Error내용: List index out of bounds(-1)
//====================================
If tdsMaster.Locate('STRING1;STRING2;STRING6',
VarArrayof([Str1, Str2, Str3]), [LoCaseInSensitive]) = False Then
Begin
dbgTelcv.DataSource.DataSet.Bookmark := Items[i];
tdsMaster.Append;
tdsMaster.Post;
End
Else
Begin
DupCount := DupCount + 1; //중복자료check
End;
dbgTelcv.DataSource.DataSet.FindNext;
End; //end of CurrentRowSelected
End; //end of For I:=0 to count-1
End; //end of Count>0
IF DupCount > 0 then //중복된 건수 check
Begin
GetMsg('BL00190', 'RECALL'+ ' ' + IntToStr(DupCount) + '건', mtWarning);
End; //메시지공통함수
End; //end of with dbgtelcv.selectedrows
dbgTelcv.DataSource.DataSet.GotoBookmark(TempBookmark);
dbgTelcv.DataSource.DataSet.FreeBookmark(TempBookmark);
dbgTelcv.DataSource.DataSet.EnableControls;
end;