Delphi与SQLServer连接后,在FieldByName()上出有关问题,为什么
Delphi与SQLServer连接后,在FieldByName()上出问题,为什么?
procedure TLoginfrm.bkOKClick(Sender: TObject);
begin
if not StudentDM.LoginADOQR.Active then //如果数据库没有打开,则打开数据库
StudentDM.LoginADOQR.Active:=true;
if (not StudentDM.LoginADOQR.Locate( 'UserID ',trim(UserIDEdt.Text),[]))
or (StudentDM.LoginADOQR.FieldByName( 'Password ').AsString <> Trim(PasswordEdt.Text)) then
begin
Edit1.Text:=trim(StudentDM.LoginADOQRUserID.AsString);
Edit2.Text:=trim(StudentDm.LoginADOQRPassword.AsString);
Application.MessageBox( '账号或密码错误 ', '提示信息 ',MB_ICONWarning);
UserIDEdt.SetFocus();
exit;
end
else
Application.Terminate();
end;
数据表UserID,Password,里面有个用户名和密码都是admin
我做好了一个登陆界面,连接好了数据库,写好了SQL语句,但是不管了账户和密码是否正确总是进入MessageBox模块........Edit1和Edit2是我为了跟踪数据表指针建立的...里面都能读出数据表中的admin
我把这段
or (StudentDM.LoginADOQR.FieldByName( 'Password ').AsString <> Trim(PasswordEdt.Text))
去掉后,在UserIDEdt中输入admin,能正确登陆...经过测试好像就是这句的问题了...但是我觉得这里毫无问题啊?这个是为什么啊?
------解决方案--------------------
if (not StudentDM.LoginADOQR.Locate( 'UserID ',trim(UserIDEdt.Text),[]))
then
if (StudentDM.LoginADOQR.FieldByName( 'Password ').AsString <> Trim) then(PasswordEdt.Text))
begin
Edit1.Text:=trim(StudentDM.LoginADOQRUserID.AsString);
Edit2.Text:=trim(StudentDm.LoginADOQRPassword.AsString);
Application.MessageBox( '账号或密码错误 ', '提示信息 ',MB_ICONWarning);
UserIDEdt.SetFocus();
exit;
end
------解决方案--------------------
修改字段名字为PWD试试,
好象password跟关键字冲突
------解决方案--------------------
那个IF语句没关系的
------解决方案--------------------
我怀疑StudentDM.LoginADOQR.FieldByName( 'Password ').AsString <> Trim(PasswordEdt.Text)) 的时候,还没有Locate到正确的记录去,所以这里总为Ture;
你分开写吧
if not StudentDM.LoginADOQR.Locate( 'UserID ',trim(UserIDEdt.Text),[]))
then
if (StudentDM.LoginADOQR.FieldByName( 'Password ').AsString <> Trim(PasswordEdt.Text)) then
begin
Edit1.Text:=trim(StudentDM.LoginADOQRUserID.AsString);
Edit2.Text:=trim(StudentDm.LoginADOQRPassword.AsString);
Application.MessageBox( '账号或密码错误 ', '提示信息 ',MB_ICONWarning);
UserIDEdt.SetFocus();
exit;
end
procedure TLoginfrm.bkOKClick(Sender: TObject);
begin
if not StudentDM.LoginADOQR.Active then //如果数据库没有打开,则打开数据库
StudentDM.LoginADOQR.Active:=true;
if (not StudentDM.LoginADOQR.Locate( 'UserID ',trim(UserIDEdt.Text),[]))
or (StudentDM.LoginADOQR.FieldByName( 'Password ').AsString <> Trim(PasswordEdt.Text)) then
begin
Edit1.Text:=trim(StudentDM.LoginADOQRUserID.AsString);
Edit2.Text:=trim(StudentDm.LoginADOQRPassword.AsString);
Application.MessageBox( '账号或密码错误 ', '提示信息 ',MB_ICONWarning);
UserIDEdt.SetFocus();
exit;
end
else
Application.Terminate();
end;
数据表UserID,Password,里面有个用户名和密码都是admin
我做好了一个登陆界面,连接好了数据库,写好了SQL语句,但是不管了账户和密码是否正确总是进入MessageBox模块........Edit1和Edit2是我为了跟踪数据表指针建立的...里面都能读出数据表中的admin
我把这段
or (StudentDM.LoginADOQR.FieldByName( 'Password ').AsString <> Trim(PasswordEdt.Text))
去掉后,在UserIDEdt中输入admin,能正确登陆...经过测试好像就是这句的问题了...但是我觉得这里毫无问题啊?这个是为什么啊?
------解决方案--------------------
if (not StudentDM.LoginADOQR.Locate( 'UserID ',trim(UserIDEdt.Text),[]))
then
if (StudentDM.LoginADOQR.FieldByName( 'Password ').AsString <> Trim) then(PasswordEdt.Text))
begin
Edit1.Text:=trim(StudentDM.LoginADOQRUserID.AsString);
Edit2.Text:=trim(StudentDm.LoginADOQRPassword.AsString);
Application.MessageBox( '账号或密码错误 ', '提示信息 ',MB_ICONWarning);
UserIDEdt.SetFocus();
exit;
end
------解决方案--------------------
修改字段名字为PWD试试,
好象password跟关键字冲突
------解决方案--------------------
那个IF语句没关系的
------解决方案--------------------
我怀疑StudentDM.LoginADOQR.FieldByName( 'Password ').AsString <> Trim(PasswordEdt.Text)) 的时候,还没有Locate到正确的记录去,所以这里总为Ture;
你分开写吧
if not StudentDM.LoginADOQR.Locate( 'UserID ',trim(UserIDEdt.Text),[]))
then
if (StudentDM.LoginADOQR.FieldByName( 'Password ').AsString <> Trim(PasswordEdt.Text)) then
begin
Edit1.Text:=trim(StudentDM.LoginADOQRUserID.AsString);
Edit2.Text:=trim(StudentDm.LoginADOQRPassword.AsString);
Application.MessageBox( '账号或密码错误 ', '提示信息 ',MB_ICONWarning);
UserIDEdt.SetFocus();
exit;
end