procedure TfmUser.BitBtn2Click(Sender: TObject);
var getvalue:integer;
begin
if (epassword.text<>eRepasswd.text) then begin
showmessage('입력하신 암호가 일치하지 않습니다.' +#13#10+'확인후 다시 입력 바랍니다.');
exit;
end;
if (epassword.text='')then begin
showmessage('암호는 반드시 입력하셔야 합니다.');
exit;
end;
case bmode of
0 : begin
with dm.qryupdate do begin
close;
sql.clear;
sql.add('select count(*) from login');
sql.add('where userid=:p1 ');
params[0].asstring:=eusername.text;
open;
if fields[0].asinteger <> 0 then begin
showmessage('사용자명은 이미 존재합니다.'+#13+#10+'다시 확인해 보시기 바랍니다.');
exit;
end;
close;
end;
with dm.qryupdate do begin
close;
sql.clear;
sql.add('insert into login(userid,passwd,rights)');
sql.add('values(:p1,:p2,:p3); ');
params[0].asstring:=eusername.text;
params[1].asstring:=epassword.text;
params[2].asinteger:=getvalue;
execsql;
showmessage('입력되었습니다.');
end;
end;
1:begin
with dm.qryupdate do begin
close;
sql.clear;
sql.Add('update login set userid=:p1, passwd=:p2,');
sql.add(' rights=:p3 ');
sql.add('where userid=:p4 ');
params[0].asstring:=eusername.text;
params[1].asstring:=epassword.text;
params[2].asinteger:=getvalue;
params[3].asstring:=userid;
execsql;
showmessage('수정되었습니다.');
end;
end;
end;
dm.qrygetcode.close;
dm.qrygetcode.open;
dataclear;
end;
실행하고 USERID, PASSWORD 입력하면 EDBEngineError with Massage '
Type Mismatch in expression'이라고 나와요
사실은 위의 프로그램도 무조건따라하기로 한거거든요
보시고 프로그램 설명도좀 부탁드립니다. query 중심으로
카암사.....
.
.
2) params[2].asinteger:=getvalue;
3) execsql;
.
.
1번 문장에서 getvalue라는 변수가 선언되어 있으나 초기화되지 않은 상태로
2번 배정문의 오른쪽에 사용하여 3번 문장으로 쿼리를 실행하면
테이블의 rights 필드에 쓰레기값이 대입되기때문에
'EDBEngineError with Massage Type Mismatch in expression'이라는
에러가 발생하는것 같습니다.
혹시 책보고 코딩하실때 누락된 문장이 있는지 확인해 보세요.