我用Access数据庫就可以,可是用SQL只能进User_ID='0'的用户,而不能进1的用户。现在1和0都进不去了。我这代码我查了好多遍了,不知道错在哪里?请各位指教一下。procedure TUser_Form.B_loginClick(Sender: TObject);
begin
  Try
   Database.Connected:=True;
   User_Table.Filter:='User_Name='''+User_n.Text+'''';
   User_Table.Filtered:=True;
   User_Table.Open;
  Except
   Application.MessageBox('No Connection!','Error',Mb_ok);
   Application.Terminate;
  end;
IF User_Table.RecordCount=1 Then
 begin
   If (User_Table['User_Name']=User_n.Text) and (User_Table['User_Pass']=User_p.Text) then
   begin
    IF (User_Table['User_ID']='1') Then
     begin
       Admini_Form.Show;
       User_Form.Hide;
     end
    Else if (User_Table['User_ID']='0') Then
       begin
         PT_Form.show;
         User_Form.Hide;
       end
    Else
     Application.MessageBox('User name or User Password Error','Please Call lin',Mb_ok);
    end
  Else
   Application.MessageBox('No The Administrator!','Please Call lin',Mb_ok);
  end
Else
 Application.MessageBox('No The User!','Please call XXX',Mb_ok);
end;

解决方案 »

  1.   

    User_ID是什么类型?
    感觉取值的时候最好用FIELDBYNAME,不然可能会出错。
      

  2.   

    我用Access数据庫就可以,可是用SQL只能进User_ID='0'的用户,而不能进1的用户。现在1和0都进不去了你可以在程序里适当的地方加上showmessage();看看变量问题建议用User_Table.fieldbyname('User_Name').asString
      

  3.   

    这样写程序太复杂了,你可以使用SQL语句来实现,不是更好吗.
    另外,注意user_name列的数据类型,如果使用CHAR型,就可以=比较,如果是varchar,比较方式就不一样了,如果后边有空格,则比较结果也不一样.