인터베이스랑 연동해서 사용한 프로그램입니다...
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;