procedure Tfrmlogin.btnloginClick(Sender: TObject);
var
str:string;
begin
if Trim(edtUserid.Text)='' then
begin
showmessage('用户代码不能为空');
abort;
end;
if Trim(edtpassword.Text)='' then
begin
showmessage('用户密码不能为空');
abort;
end; str:='select * from userdoss';
str:=str+' where userid='''+Trim(edtUserid.Text)+'''';
str:=str+' and password='''+Trim(edtpassword.Text)+'''';
try
with dm.adoqrylogin do
begin
close;
sql.Clear;
sql.Add(str);
open;
end;
if dm.adoqrylogin.RecordCount<1 then
begin
i:=i+1;
if i<=3 then
begin
showmessage('用户ID或密码错误,请重新输入!!');
abort;
end
else
begin
showmessage('非法用户!'+#13+'程序将终止');
abort;
end;
end else
begin
w_sysfun.userid:=Trim(edtUserid.Text);
w_sysfun.password:=Trim(edtpassword.Text);
w_sysfun.username:=Trim(dm.adoqrylogin.fieldbyname('username').AsString);
frmlogin.Hide;
erpmain.Show;
end;
finally
dm.adoqrylogin.Free;
end;
end;
请问在上面代码中,如果输入了用户名和密码,但不正确,这时用语句:
showmessage('用户ID或密码错误,请重新输入!!');
abort;
则重新输入用户名和密码后再提交时,这时就会报错,请问应如何修改?谢.
var
str:string;
begin
if Trim(edtUserid.Text)='' then
begin
showmessage('用户代码不能为空');
abort;
end;
if Trim(edtpassword.Text)='' then
begin
showmessage('用户密码不能为空');
abort;
end; str:='select * from userdoss';
str:=str+' where userid='''+Trim(edtUserid.Text)+'''';
str:=str+' and password='''+Trim(edtpassword.Text)+'''';
try
with dm.adoqrylogin do
begin
close;
sql.Clear;
sql.Add(str);
open;
end;
if dm.adoqrylogin.RecordCount<1 then
begin
i:=i+1;
if i<=3 then
begin
showmessage('用户ID或密码错误,请重新输入!!');
abort;
end
else
begin
showmessage('非法用户!'+#13+'程序将终止');
abort;
end;
end else
begin
w_sysfun.userid:=Trim(edtUserid.Text);
w_sysfun.password:=Trim(edtpassword.Text);
w_sysfun.username:=Trim(dm.adoqrylogin.fieldbyname('username').AsString);
frmlogin.Hide;
erpmain.Show;
end;
finally
dm.adoqrylogin.Free;
end;
end;
请问在上面代码中,如果输入了用户名和密码,但不正确,这时用语句:
showmessage('用户ID或密码错误,请重新输入!!');
abort;
则重新输入用户名和密码后再提交时,这时就会报错,请问应如何修改?谢.
dm.adoqrylogin.Free;
end;
你把它释放了,下次再用肯定出错,不要释放它.
这东东应该是你在设计期放在DM里的,就不要手工释放它,除非你是在运行期创建,你才应该释放