var user_name,user_passwd:string; begin user_name:=Edit1.text; user_passwd:=Edit2.text; with Query1 do begin SQL.clear; SQL.add('select * from tablename'); SQL.add('where user=user_name and password=user_passwd'); Open; end; if Query1.recordcount=1 then //自己的代码 end;
var name,pass: string; begin name := trim(Edit1.text); pass := Edit2.text; with ADOQuery1 do begin SQL.clear; SQL.add('select * from tablename where user=''' +name +''''); end; if ADOQuery1.recordcount<> 0 then begin if pass<> ADOQuery1.FieldByName('user').AsString begin showmessage('密码错误!'); end else begin showmessage('成功登陆'); end; end else begin showmessage('用户不存在!'); end;
我按照各位的方法,已经基本实现了要求,可是有个小问题:SQL语句的添加,如果在程序代码中添加,会出现“丢失SQL属性”的提示!如果在程序设计阶段输入SQL语句,则不会有问题,为什么会这样?我是这样写的: var name,pass: string; begin name := trim(Edit1.text); pass := Edit2.text; with ADOQuery1 do begin SQL.clear; SQL.add('select user,pass from login where user='+name+'and pass='+pass); open; end; if ADOQuery1.recordcount<> 0 then begin if pass<> ADOQuery1.FieldByName('pass').AsString begin showmessage('密码错误!'); end else begin showmessage('成功登陆'); end; end else begin showmessage('用户不存在!'); end;
SQL.clear;后面跟个close 试试
begin adoquery1.clear; sqlstr:='select * from tablname where (user='''+edit1.text+''')';//sqlstr为 定义的一个string类型的变量; adoquery1.sql.add(sqlstr); adoquery1.open; if adoquery1.recordcount=1 then begin if adoquery1.fieldbyname('password')=trim(edit2.text) then begin from2.showmodale;//登陆成功,显示某窗体。 end else showmessage('密码错误'); end else showmessage('此用户名不存在'); end;
SQL.add('select user,pass from login where user='+name+'and pass='+pass);<<------ pass ?哪来的pass ,你的字段名不是叫password 吗
to zjy6631(刘阿木) 我只是暂时代替一下而已的!
不错,在代码开头加一个close试是
我给个程序你自己看看! 这是我做的!水费管理系统! procedure TpassForm.BitBtn1Click(Sender: TObject); begin flashwindow(passForm.handle,true); if (trim(editcode.text)='') then begin messagedlg('请输入您的工号!',mtinformation,[mbyes],0); editcode.clear; editpass.clear; editcode.setfocus; end else begin //判断是否是正确用户 with adoquery1 do begin close; sql.Clear; sql.Add('select * from zggl where 职工号=:zgh'); parameters.ParamByName('zgh').Value:=editcode.text; open; if (recordcount=0) then begin messagedlg('您的工号错误!请重新输入!',mterror,[mbok],0); editcode.Clear; editpass.clear; editcode.SetFocus; exit; end //判断是否密码正确 else begin sql.clear; sql.Add('select * from zggl where 职工号=:zgh and 密码=:mm'); parameters.ParamByName('zgh').Value:=editcode.text; parameters.ParamByName('mm').Value:=editpass.text; open; if (recordcount=0) then begin messagedlg('密码错误!请注意大小写!',mterror,[mbok],0); editpass.Clear; editpass.SetFocus; exit; end //成功登陆 else if (recordcount<>0) then begin with adoquery2 do begin close; sql.Clear; sql.Add('select * from dlxx'); open; first; insert; fieldbyname('进入时间').AsDateTime:=now; fieldbyname('职工号').AsString:=editcode.Text; post; end; passform.close; end else begin messagedlg('连接错误',mterror,[mbok],0); exit; end; end; end;//with adoquery1 do end; end;
Table1.FieldByName('password').AsString
user_name,user_passwd:string;
begin
user_name:=Edit1.text;
user_passwd:=Edit2.text;
with Query1 do
begin
SQL.clear;
SQL.add('select * from tablename');
SQL.add('where user=user_name and password=user_passwd');
Open;
end;
if Query1.recordcount=1 then
//自己的代码
end;
name,pass: string;
begin
name := trim(Edit1.text);
pass := Edit2.text;
with ADOQuery1 do
begin
SQL.clear;
SQL.add('select * from tablename where user=''' +name +'''');
end;
if ADOQuery1.recordcount<> 0 then
begin
if pass<> ADOQuery1.FieldByName('user').AsString
begin
showmessage('密码错误!');
end
else begin
showmessage('成功登陆');
end;
end
else begin
showmessage('用户不存在!');
end;
var
name,pass: string;
begin
name := trim(Edit1.text);
pass := Edit2.text;
with ADOQuery1 do
begin
SQL.clear;
SQL.add('select user,pass from login where user='+name+'and pass='+pass);
open;
end;
if ADOQuery1.recordcount<> 0 then
begin
if pass<> ADOQuery1.FieldByName('pass').AsString
begin
showmessage('密码错误!');
end
else begin
showmessage('成功登陆');
end;
end
else begin
showmessage('用户不存在!');
end;
adoquery1.clear;
sqlstr:='select * from tablname where (user='''+edit1.text+''')';//sqlstr为 定义的一个string类型的变量;
adoquery1.sql.add(sqlstr);
adoquery1.open;
if adoquery1.recordcount=1 then
begin
if adoquery1.fieldbyname('password')=trim(edit2.text) then
begin
from2.showmodale;//登陆成功,显示某窗体。
end
else
showmessage('密码错误');
end
else
showmessage('此用户名不存在');
end;
pass ?哪来的pass ,你的字段名不是叫password 吗
我只是暂时代替一下而已的!
这是我做的!水费管理系统!
procedure TpassForm.BitBtn1Click(Sender: TObject);
begin
flashwindow(passForm.handle,true);
if (trim(editcode.text)='') then
begin
messagedlg('请输入您的工号!',mtinformation,[mbyes],0);
editcode.clear;
editpass.clear;
editcode.setfocus;
end
else begin
//判断是否是正确用户
with adoquery1 do
begin
close;
sql.Clear;
sql.Add('select * from zggl where 职工号=:zgh');
parameters.ParamByName('zgh').Value:=editcode.text;
open;
if (recordcount=0)
then
begin
messagedlg('您的工号错误!请重新输入!',mterror,[mbok],0);
editcode.Clear;
editpass.clear;
editcode.SetFocus;
exit;
end
//判断是否密码正确
else
begin
sql.clear;
sql.Add('select * from zggl where 职工号=:zgh and 密码=:mm');
parameters.ParamByName('zgh').Value:=editcode.text;
parameters.ParamByName('mm').Value:=editpass.text;
open;
if (recordcount=0)
then
begin
messagedlg('密码错误!请注意大小写!',mterror,[mbok],0);
editpass.Clear;
editpass.SetFocus;
exit;
end
//成功登陆
else if (recordcount<>0)
then
begin
with adoquery2 do
begin
close;
sql.Clear;
sql.Add('select * from dlxx');
open;
first;
insert;
fieldbyname('进入时间').AsDateTime:=now;
fieldbyname('职工号').AsString:=editcode.Text;
post;
end;
passform.close;
end
else
begin
messagedlg('连接错误',mterror,[mbok],0);
exit;
end;
end;
end;//with adoquery1 do
end;
end;