请高人指点迷津!!!!!(50分)

Y

yankk

Unregistered / Unconfirmed
GUEST, unregistred user!

procedure TFormPassw.BitBtn1Click(Sender: TObject);
var i:integer;
begin
if dlcs<3 then
begin
with ADOQuery1 do
begin
close;
sql.clear;
Sql.add('select * from operator where ( Ono=:cs1 )and (Passw=:cs2));
parameters.ParamByName('cs1').value:=strtoint(Edit1.Text);
parameters.ParamByName('cs2').value:=Edit2.text;
open;
end;
if ADOQuery1.RecordCount=0 then
begin
showmessage('对不起,您的用户名不存在或密码不正确!');
dlcs:=dlcs+1;
end
else
begin
showmessage('欢迎使用本系统!·');
end;
end
else
begin
showmessage('对不起,您没有使用本系统的权限!');
close;
end;

end;
这是一个验证用户号和密码的窗体,dlcs 是一个整形变量,代表密码或用户名错误的登录次数,dlcs〉=3时
就不让登录了。但是这个程序在第一次不对第二次登录时,显示“BOF或EOF中有一个是真,或前记录已被删除,说需操作要求一个当前纪录的错误,请高人指点迷津!!!!!
 
这是ADO的一个Bug,赶快升级!我也碰到过,以前也有人问过!
 
到哪里去升级啊?
 
http://www.borland.com/devsupport/delphi/mdac26.html
 
http://www.inprise.com.cn/download.htm
 
http://www.inprise.com.cn/download.htm
无法下载啊,还有没有别的地方有?
可不可以发到我的邮箱里?:-)
yankk_2000@chinare.com
 
yankk_2000@chinare.com信箱好像不对!!!!15M !!!比较大!!!
 
呵呵,老大,你走运了,用下面的这个应该可以解决问题

将LockType设为ltreadonly,

在需要写数据时设为ltOptimistic。
 
哦,真对不起,我的邮箱应该是yankk_2000@chinaren.com

 
lgl:你说的那个属性哪个组件的?
能不能说详细一点?:-)
 
>>yankk:adoquery的
adoquery1.locktype:=ltreadonly;
with adoquery1 do
...

如需要写入数据
adoquery1.locktype:=ltOptimistic;
 
1.你可以用IsEmpty来判断是否有资料.
2.SQL中最好只抓用户参数,再决断密码对不对.不要用户和密码都设参数,不然容易出问题
(若你的密码又没限制长度的话).
 
yankk:你的问题ok没有?没有请提前!
 
使用IsEmpty来判断,
RecordCount在C/S结构中,返回值有时有错误,还没有找到原因
 
多人接受答案了。
 

Similar threads

S
回复
0
查看
1K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
932
SUNSTONE的Delphi笔记
S
S
回复
0
查看
1K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
965
SUNSTONE的Delphi笔记
S
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
顶部