성적처러프로그램을 짜구 있는데...학번필들와 이름필드의 중복을 없앨려구 하거든여...
이미 입력은 파라바이네임을 써서 하구 있는데..중복을 하면 무결성 원칙의 에러라구
하거든여...
어떻게 방법이 없나여?
소스는 아래와 같습니다...
procedure TForm3.btnSaveClick(Sender: TObject);
var
i : integer;
a,b,c,d,e,f,g : string;
begin
a:=Edit1.text;
b:=Edit2.text;
c:=Edit3.text;
d:=Edit4.text;
e:=Edit5.text;
f:=Edit6.text;
g:=Edit7.text;
if (strtoint(c)<1) or (strtoint(c)>100) then
begin
showmessage('올바르지 않는 점수 입니다.');
edit3.clear;
edit3.setfocus;
exit;
end;
if (strtoint(d)<1) or (strtoint(d)>100) then
begin
showmessage('올바르지 않는 점수 입니다.');
edit4.clear;
edit4.setfocus;
exit;
end;
if (strtoint(e)<1) or (strtoint(e)>100) then
begin
showmessage('올바르지 않는 점수 입니다.');
edit5.clear;
edit5.setfocus;
exit;
end;
if (strtoint(f)<1) or (strtoint(f)>100) then
begin
showmessage('올바르지 않는 점수 입니다.');
edit6.clear;
edit6.setfocus;
exit;
end;
if (strtoint(g)<1) or (strtoint(g)>100) then
begin
showmessage('올바르지 않는 점수 입니다.');
edit7.clear;
edit7.setfocus;
exit;
end;
with Query1 do begin
Close;
Sql.Text := 'insert into Total (NUM,NAME,DAT,UNIX,DEL,JAVA,C)';
Sql.Text := Sql.Text + ' values (:NUM, :NAME, :DAT, :UNIX, :DEL, :JAVA, :C) ';
Parambyname('NUM').asinteger :=strtointdef(Edit1.Text,0);
Parambyname('NAME').AsString:=Edit2.Text;
Parambyname('DAT').asinteger :=strtointdef(Edit3.Text,0);
Parambyname('UNIX').asinteger :=strtointdef(Edit4.Text,0);
Parambyname('DEL').asinteger :=strtointdef(Edit5.Text,0);
Parambyname('JAVA').asinteger :=strtointdef(Edit6.Text,0);
Parambyname('C').asinteger :=strtointdef(Edit7.Text,0);
ExecSQL;
end;
with Query2 do begin
Close;
Open;
end;
edit1.Clear;
edit2.Clear;
edit3.Clear;
edit4.Clear;
edit5.Clear;
edit6.Clear;
edit7.Clear;
end;
님께서 원하는건 아마두 중복입력을 막을라구 하는거 같은디 그건가여 ^^;;
간단하게 할수 있을거 같네여 ^^;;
음 구라니까 insert전에
sql.text := 'select * from total where num= :num and name = :name ';
Parambyname('NUM').asinteger :=strtointdef(Edit1.Text,0);
Parambyname('NAME').AsString:=Edit2.Text;
open;
if not eof then
begin
showmessage('^^ 등록되어있다네...');
exit;
end;
이렇게 하면 끝 ^^;;
구람 즐프여...^^;;
피에수: 아래 try ... except 예외처리 추가 했습니당..^^;;
델파이초보 wrote:
> 성적처러프로그램을 짜구 있는데...학번필들와 이름필드의 중복을 없앨려구 하거든여...
> 이미 입력은 파라바이네임을 써서 하구 있는데..중복을 하면 무결성 원칙의 에러라구
> 하거든여...
> 어떻게 방법이 없나여?
> 소스는 아래와 같습니다...
>
> procedure TForm3.btnSaveClick(Sender: TObject);
> var
> i : integer;
> a,b,c,d,e,f,g : string;
>
> begin
> a:=Edit1.text;
> b:=Edit2.text;
> c:=Edit3.text;
> d:=Edit4.text;
> e:=Edit5.text;
> f:=Edit6.text;
> g:=Edit7.text;
>
>
>
>
> if (strtoint(c)<1) or (strtoint(c)>100) then
> begin
> showmessage('올바르지 않는 점수 입니다.');
> edit3.clear;
> edit3.setfocus;
> exit;
> end;
> if (strtoint(d)<1) or (strtoint(d)>100) then
> begin
> showmessage('올바르지 않는 점수 입니다.');
> edit4.clear;
> edit4.setfocus;
> exit;
> end;
> if (strtoint(e)<1) or (strtoint(e)>100) then
> begin
> showmessage('올바르지 않는 점수 입니다.');
> edit5.clear;
> edit5.setfocus;
> exit;
> end;
> if (strtoint(f)<1) or (strtoint(f)>100) then
> begin
> showmessage('올바르지 않는 점수 입니다.');
> edit6.clear;
> edit6.setfocus;
> exit;
> end;
> if (strtoint(g)<1) or (strtoint(g)>100) then
> begin
> showmessage('올바르지 않는 점수 입니다.');
> edit7.clear;
> edit7.setfocus;
> exit;
> end;
>
> with Query1 do begin
> Close;
> Sql.Text := 'insert into Total (NUM,NAME,DAT,UNIX,DEL,JAVA,C)';
> Sql.Text := Sql.Text + ' values (:NUM, :NAME, :DAT, :UNIX, :DEL, :JAVA, :C) ';
> Parambyname('NUM').asinteger :=strtointdef(Edit1.Text,0);
> Parambyname('NAME').AsString:=Edit2.Text;
> Parambyname('DAT').asinteger :=strtointdef(Edit3.Text,0);
> Parambyname('UNIX').asinteger :=strtointdef(Edit4.Text,0);
> Parambyname('DEL').asinteger :=strtointdef(Edit5.Text,0);
> Parambyname('JAVA').asinteger :=strtointdef(Edit6.Text,0);
> Parambyname('C').asinteger :=strtointdef(Edit7.Text,0);
try
ExecSQL;
except
showmessage('error');
end;
> end;
> with Query2 do begin
> Close;
> Open;
> end;
> edit1.Clear;
> edit2.Clear;
> edit3.Clear;
> edit4.Clear;
> edit5.Clear;
> edit6.Clear;
> edit7.Clear;
>
> end;