Q&A

  • 중복Check관련 (Locate문)
=> 여러필드를 키로한 중복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;



0  COMMENTS