程序是没有出错,但运行后总提示说“无此用户”,望各位给看一下那出错了?!一个教务管理系统的登录界面,包括“用户名”(控件是Edit),“密码”(控件是Edit),“身份识别”(控件是Combobox),身份识别分为教师,学生,教务人员,在SQL sever 2000里建了一个user的表,希望在输入用户名和密码后,根据身份的不同,分别弹出不同的窗体,还用到三个控件,Database,Table,Query。
登录按钮的代码如下:
procedure TF_login.B_loginClick(Sender: TObject);  //用户登录
var sql_str:string;
begin
  try
   Database1.Connected:=true;
   Query1.SQL.Clear ;
   sql_str:='select * from [USER] where ID='+''''+i_user.Text +'''';
   Query1.SQL.Add( sql_str);
   Query1.Open;
   T_user.Open;
  Except
   Application.MessageBox('请与系统管理员联系。','数据库连接错误',MB_OK);
   Application.Terminate;    //数据库连接错误,中断程序
  end;
  if T_user.RecordCount=1
 then
  begin
    if T_user['PASSWD']=i_passwd.Text then
    begin
      if T_user['AUTHORITY']='2' then
      begin
      F_login.Hide;
      F_teacher.Show;
      end
      else
      if T_user['AUTHORITY']='1' then
      begin
      F_login.Hide;
      F_student.Show;
      end
      else
      if T_user['AUTHORITY']='3' then
      begin
      F_login.Hide;
      F_jw.Show;
      end
        else
        Application.MessageBox('请选择合适的登陆软件','用户权限错误',MB_OK);
        end
    else
      Application.MessageBox('请确认密码,注意大小写','密码不匹配',MB_OK);
  end
  else
    Application.MessageBox('请确认用户名是否正确','无此用户',MB_OK);
end;

解决方案 »

  1.   

    T_user.Open; 是什么东西??不要用,直接用 Query1  Query1.Open;
      Query1.Last;
      

  2.   

    这个问题怎么似曾相识啊if T_user.RecordCount=1这个条件可能不对你不会设置一个断点,然后单步运行吗?
      

  3.   

    你用Query1了怎么还冒出来个T_user
      

  4.   

    定义一个变量,Query1执行后用变量取其中一个字段的值,用showmessage显示出来看取到没有.
      

  5.   

    第一个呢,Trim(i_user.Text)
    第二个呢不用Query1.SQL.Add( sql_str);
    改成Query1.Sql.text:=sql_str
    然后试试
      

  6.   

    楼上的,“Application.MessageBox('请确认用户名是否正确','无此用户',MB_OK);”,倒数第二句,哈哈
      

  7.   

    楼上的,“Application.MessageBox('请确认用户名是否正确','无此用户',MB_OK);”,倒数第二句,哈哈/////////////////////////////////窗体的Caption而已,不能算提示吧?
      

  8.   

    我在SQL sever 2000里建了一张表user
    里面有id(用户名),passwd(密码),authority(权限)
    当我想在运行后,输入学生的名字就弹出学生的对应窗体
    输入教师的名字弹出教师的对应窗体
    学生和教师的权限是不同的
    一个是1,一个是2但运行后无论输入教师的名字还是学生的名字
    都会弹出对话框 “无此用户”
    所以想请各位给看看是不是程序写错了?还是和SQL sever 2000的数据库有问题?
      

  9.   

    RecordCount只能用于Paradox 与 dBASE类型的数据表
    最好用IsEmpty或先First后看是不是Eof来判断数据表中是否存在要查找的数据记录
      

  10.   

    到盒子下载一个我写的DLL封装SQL登陆的程序吧
    不用你费那么多精力去写的, 下载新版的那个附件.
    http://bbs.2ccc.com/topic.asp?topicid=222172
      

  11.   

    可以使用CASE语句实现一下。if语句用多了,很乱的!