while not DataForm.ExecQuery.Eof do begin
if (DataForm.ExecQuery.FieldValues['dongcode'] = strdongcode) and (DataForm.ExecQuery.Fieldvalues['bon'] = strbon) and (DataForm.ExecQuery.Fieldvalues['bu'] = strbu) and
(DataForm.ExecQuery.Fieldvalues['page'] = strpage) then begin
memo1.Lines.Add('이미 등록된 파일입니다.');
break;
end else begin
SQL_Str := 'insert into test values (''' + strdongcode + ''', ''' + strbon + ''', ''' + strbu + ''', ''' + strdaejang + ''', ''3'' , ''0'', ''00'', ''000'', ''' + strpage + ''')';
DataForm.ExecQuery.SQL.Clear;
DataForm.ExecQuery.SQL.Text := SQL_Str;
DataForm.ExecQuery.ExecSQL;
memo.Lines.Add('처리되었습니다.');
end;
DataForm.ExecQuery.Next;
end;
이런식으로 while문을 쓰려고 테스트를 해봤는데... 이게 한번 while문을 돌고 빠져나가면 다시 처음 데이터 값과 비교해서 아니면 else문으로 바로 넘어가거든요....
이런식으로 되면 안되고, 테이블에 들어있는 모든 값들과 한번씩 모두 검색을 한다음에 일치하지 않으면 else문을 수행하도록 해야하거든요... 좋은 방법이 없을까요?
부탁드립니다... 어제부터 계속 이거 하나 때문에 고생하고 있습니다.
될것 같은게 되질 않으니 말이예요... 빠른 답변 부탁드려요~~~
하시는 것은 어떨까 추천합니다.
var
FindSame: Boolean; // 이 변수는 전역 또는 프로시져 내에 새로 선언할 것
...
FindSame := False;
DataForm.ExecQuery.First;
// 레코드의 처음부터 끝까지 순회하면서 동일한 레코드가 있는 지 검사.
while not DataForm.ExecQuery.Eof do
begin
if (DataForm.ExecQuery.FieldValues['dongcode'] = strdongcode) and
(DataForm.ExecQuery.Fieldvalues['bon'] = strbon) and
(DataForm.ExecQuery.Fieldvalues['bu'] = strbu) and
(DataForm.ExecQuery.Fieldvalues['page'] = strpage) then
FindSame := True
else DataForm.ExecQuery.Next;
end;
// FindSame이 True이면 동일한 레코드가 발견된 것이다.
if FindSame = True then
memo1.Lines.Add('이미 등록된 파일입니다.')
else
begin
SQL_Str := 'insert into test values (''' + strdongcode + ''', ''' + strbon
+ ''', ''' + strbu + ''', ''' + strdaejang
+ ''', ''3'' , ''0'', ''00'', ''000'', ''' + strpage + ''')';
with DataForm.ExecQuery do
begin
SQL.Clear;
SQL.Text := SQL_Str;
ExecSQL;
memo.Lines.Add('처리되었습니다.');
end;
end;
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
김영애 wrote:
> while not DataForm.ExecQuery.Eof do begin
> if (DataForm.ExecQuery.FieldValues['dongcode'] = strdongcode) and (DataForm.ExecQuery.Fieldvalues['bon'] = strbon) and (DataForm.ExecQuery.Fieldvalues['bu'] = strbu) and
> (DataForm.ExecQuery.Fieldvalues['page'] = strpage) then begin
> memo1.Lines.Add('이미 등록된 파일입니다.');
> break;
> end else begin
>
> SQL_Str := 'insert into test values (''' + strdongcode + ''', ''' + strbon + ''', ''' + strbu + ''', ''' + strdaejang + ''', ''3'' , ''0'', ''00'', ''000'', ''' + strpage + ''')';
> DataForm.ExecQuery.SQL.Clear;
> DataForm.ExecQuery.SQL.Text := SQL_Str;
> DataForm.ExecQuery.ExecSQL;
> memo.Lines.Add('처리되었습니다.');
> end;
> DataForm.ExecQuery.Next;
> end;
>
>
> 이런식으로 while문을 쓰려고 테스트를 해봤는데... 이게 한번 while문을 돌고 빠져나가면 다시 처음 데이터 값과 비교해서 아니면 else문으로 바로 넘어가거든요....
> 이런식으로 되면 안되고, 테이블에 들어있는 모든 값들과 한번씩 모두 검색을 한다음에 일치하지 않으면 else문을 수행하도록 해야하거든요... 좋은 방법이 없을까요?
> 부탁드립니다... 어제부터 계속 이거 하나 때문에 고생하고 있습니다.
> 될것 같은게 되질 않으니 말이예요... 빠른 답변 부탁드려요~~~
>