密码验证登陆问题!
源程序是这样的:
var
user:string;
word:string;
begin
adoquery1.Close;
adoquery1.SQL.Clear;
adoquery1.SQL.Add('select username,password from dbo.limit ');
adoquery1.SQL.Add('where username=userid');
if Key=Vk_RETURN then
begin
adoquery1.FieldByName('userid').AsString:=user;
adoquery1.FieldByName('password').AsString:=word;
adoquery1.Prepared;
adoquery1.open;
if (word<>edit2.Text)or(word='') then
messagebox(handle,'密码错误!','错误',16);
exit;
end;
end;
编译后执行异常中断,提示"Adoquery1:field "userid" not found",我到底该怎么办啊?
问题点数:20、回复次数:11Top
1 楼linzi(林子)回复于 2002-04-17 22:29:11 得分 2
这一句中adoquery1.SQL.Add('select username,password from dbo.limit ');是UserName,这里adoquery1.FieldByName('userid').AsString:=user;却是userid,肯定有错了
Top
2 楼nne998(☆☆☆☆☆☆☆伴月)回复于 2002-04-17 22:32:19 得分 2
adoquery1.FieldByName('username').AsString:=user;
adoquery1.FieldByName('password').AsString:=word;
Top
3 楼echome(回音壁)回复于 2002-04-17 22:41:25 得分 0
to linzi(林子):
改了还是一样啊!再说我这里有一句啊:
adoquery1.SQL.Add('where username=userid');
Top
4 楼linzi(林子)回复于 2002-04-17 22:47:54 得分 2
你应该这样adoquery1.SQL.Add('select userid,username,password from dbo.limit ');原来取出的数据集中没有Userid,当然会出错了,我觉得你应该是用username吧,那就应该是adoquery1.FieldByName('username').AsString:=user;
Top
5 楼echome(回音壁)回复于 2002-04-17 23:27:31 得分 0
程序改了!但是执行后出现这样的错误:"adoquery1:detaset not in edit or insert mode"
这是什么意思?
var
user:string;
word:string;
begin
adoquery1.Close;
adoquery1.SQL.Clear;
adoquery1.SQL.Add('select username,password from dbo.limit ');
if Key=Vk_RETURN then
begin
adoquery1.FieldByName('username').AsString:=user;
adoquery1.FieldByName('password').AsString:=word;
adoquery1.Prepared;
adoquery1.open;
if (word<>edit2.Text)or(word='') then
messagebox(handle,'密码错误!','错误',16);
exit;
end;
end;
Top
6 楼linzi(林子)回复于 2002-04-17 23:34:34 得分 2
应该是
if Key=Vk_RETURN then
begin
adoquery1.open;
user:=adoquery1.FieldByName('username').AsString;
word:=adoquery1.FieldByName('password').AsString;
if (word<>edit2.Text)or(word='') then
begin
messagebox(handle,'密码错误!','错误',16);
exit;
end;
end;
Top
7 楼macro_love(光光)回复于 2002-04-17 23:36:47 得分 8
全都有错,你的登录怎么会用到adoquery1.FieldByName('username').AsString:=user;
adoquery1.FieldByName('password').AsString:=word;
这是添加中用到的呀?!!Top
8 楼echome(回音壁)回复于 2002-04-17 23:40:59 得分 0
那你说该怎么用!Top
9 楼liyq()回复于 2002-04-17 23:44:27 得分 2
源程序似呼应是这样的:
var
user:string;
word:string;
begin
user:=edit1.Text;
adoquery1.Close;
adoquery1.SQL.Clear;
adoquery1.SQL.Add('select username,password from dbo.limit ');
adoquery1.SQL.Add('where username=:userid');
if Key=Vk_RETURN then
begin
adoquery1.ParamValues['userid'].AsString:=user;
adoquery1.Prepared;
adoquery1.open;
word:=adoquery1.FieldByName('password').AsString;
if (word<>edit2.Text) then
messagebox(handle,'密码错误!','错误',16);
exit;
end;
end;
Top
10 楼echome(回音壁)回复于 2002-04-18 19:43:59 得分 0
to liyq() :
adoquery有paramvalues属性吗?Top
11 楼kyee(浪子阿鹏)回复于 2002-04-18 20:56:30 得分 2
程序做得太差,实在不值得修改,做程序切忌思维不清淅,想到哪儿做到哪儿。Top




