注册 登录
编程论坛 Delphi论坛

如何将一个SQL的查询结果赋给一个程序中定义的就是

xiangma04 发布于 2007-03-23 15:26, 737 次点击
程序代码如下:
procedure TForm1.Button1Click(Sender: TObject);
var
yong:string;
mi:string;
n:string;
i:string;
begin
n:='pas';
yong:=edit1.Text;
mi:=edit2.Text;
ADOQuery1.SQL.Text:='select '+n+' from pass where us='''+yong+'''';
ADOQuery1.Active:=true;
i:=ADOQuery1.FieldByName(n).asstring;
edit4.Text:=i;
if i=mi then
messageDlg('欢迎登录本系统',mtinformation,[mbok],0)
else
messageDlg('密码或用户名错误!',mtinformation,[mbok],0);
end;

上面的程序实现的功能是:从数据库读一个密码出来,和用户输入的密码进行比较。
可是用if语句总会失败。能编译运行。但不得结果。用FieldByName取得返回结果却无法比较.请高手帮忙.
4 回复
#2
liuqiang_sy2007-03-23 19:36
你的那个QUERY我没有试过.不过我用TABLE做的好用你看看这个应该可以.


Table1.Close;
Table1.Open;
Table1.Active;
results:=Table1.Lookup('用户名',edit1.text,'密码');{检索数据库中对应用户名的密码项}
i:=0;
if edit1.Text='' then
begin
application.MessageBox('用户名不能为空!','提示',mb_OK);
end
else if edit2.Text='' then
begin
application.messagebox('密码不能为空!','提示',mb_OK);
end
else
if results=edit2.Text then
begin
form1.Hide;
form2.show;
end
else
begin
application.messagebox('密码错误或用户不存在!','警告',mb_ok);
edit1.Visible:=true;
edit2.Visible:=true;
edit1.Text:='';
edit2.Text:='';
end;
end;
end.
#3
nongen2007-03-24 12:11
n:='pas';
yong:=edit1.Text;
mi:=edit2.Text;
ADOQuery1.SQL.Text:='select '+n+' from pass where us='''+yong+'''';
ADOQuery1.Active:=true;//adoquery1.open;

i:=ADOQuery1.FieldByName(n).asstring;//if adoqery1.recordcount>0 then i:=adoqery1.fieldbyname(n).asstring; //有记录才能赋值啊。
edit4.Text:=i;
if i=mi then
messageDlg('欢迎登录本系统',mtinformation,[mbok],0)
else
messageDlg('密码或用户名错误!',mtinformation,[mbok],0);
#4
sgliuxiu2007-03-24 12:46
i:=trim(adoquery1.fieldbyname(n).asstring)
mi:=trim(edit2.text)
#5
xiangma042007-03-24 13:24

问题已解决。谢谢各位。如版主所言,使用TRIM函数。

1