Q&A

  • 수정부분이 잘 ....
인터베이스랑 연동해서 사용한 프로그램입니다...

key를 'korname'과 'Engname'을 잡았거든요...

두 키중 어느하나라도 중복데이타가 있으면 수정에서 에러가 납니다.

(물론 당연한건데요..)

이 부분을 고쳐야 하는데 알수가 없어서요..

중복데이타유무를 검사해서 메시지를 뿌려줘야 하는데 잘 되질 않습니다....

아시는분은 좀 가르쳐주세요.. 부탁드립니다....





//수정부분과 등록부분 소스입니다.. 보시구 답변주십시요...





//데이타 등록..

procedure TForm1.Cinsert(Sender: TObject);

begin

if Edit1.text = '' Then

Edit1.text := ' ';

if Edit2.text = '' Then

Edit2.text := ' ';

if Edit3.text = '' Then

Edit3.text := ' ';

if Edit4.text = '' Then

Edit4.text := ' ';

if Edit5.text = '' Then

Edit5.text := ' ';



With ADOQuery1 do Begin

Close;

Sql.clear;

Sql.Add('Insert into nametable');

sql.Add('(Korname,Engname,Type,Len,Del)');

Sql.Add(Format('Values (''%s'',''%s'',''%s'',''%s'',''%s'')',

[Edit1.Text,Edit2.Text,Edit3.Text,Edit4.Text,Edit5.Text]));

Execsql;



End;

DBshow(TObject(Nil));

end;





//수정시...

procedure TForm1.Cupdate(Sender: TObject);

begin

if Edit1.text = '' Then

Edit1.text := ' ';

if Edit2.text = '' Then

Edit2.text := ' ';

if Edit3.text = '' Then

Edit3.text := ' ';

if Edit4.text = '' Then

Edit4.text := ' ';

if Edit5.text = '' Then

Edit5.text := ' ';

With ADOQuery1 do Begin

Close;

Sql.Clear;

sql.Add('Update nametable');

Sql.Add(Format('set Korname = ''%s'', Engname = ''%s'', Type = ''%s'', Len = ''%s'', Del = ''%s'' ',

[Edit1.text,Edit2.Text,Edit3.Text,Edit4.text,Edit5.Text]));

Sql.Add(Format('Where Korname = ''%s'' or Engname = ''%s''', [Edit1.Text,Edit2.Text]));

Execsql;

end;

DBshow(TObject(Nil));

end;



//수정onclick

procedure TForm1.Button3Click(Sender: TObject);

var

i,j:string;

begin

With ADOQuery1 do Begin

Close;

Sql.Clear;

Sql.Add('Select * from nametable');

Sql.Add(Format('Where ''%s'' = korname or ''%s'' = engname ',[Edit1.Text,Edit2.Text]));

open;

end;

Cupdate(TObject(nil));

showmessage('수정되었습니다.');

DBshow(TObject(Nil));



// 이렇게 하면 중복데이타가 존재하지 않으면 수정이 되거든요

그런데 중복데이타가 존재하면 에러가 납니다. 수정(Cupdate)부분에서...

어떻게 고쳐야 하는지 .. 여러가지 방법을 써봤는데 영 안되는군요...





end;









//등록 onclick

procedure TForm1.Button1Click(Sender: TObject);

begin

With ADOQuery1 do Begin

Close;

Sql.Clear;

Sql.Add('Select * from nametable');

Sql.Add(Format('Where ''%s'' = korname or ''%s'' = engname ',[Edit1.Text,Edit2.Text]));

open;

If Not isEmpty Then

showmessage('다시입력하세요!')

else

begin

Cinsert(TObject(nil));

showmessage('등록되었습니다.');

end

End;

Edit1.SetFocus;

DBshow(TObject(Nil));

end;





0  COMMENTS