本人正在制作一个在线考试的登录界面。要在数据库的教师个人信息和考生个人信息的两个表中查找用户名和密码这两个字段,如果在教师个人信息中找到了用户输入的用户名并且密码正确,那么显示FORM1,如果在考生个人信息中找到了用户输入的用户名并且密码正确,那么显示FORM2。
我想用ADOQuery写,请高手指导一下怎么写,最好能给一个范例的代码!!谢谢!!~~

解决方案 »

  1.   

    大家帮忙解决一下,谢谢了,做毕业设计着急ING!~~
      

  2.   

    来一个判断,该密码和用户名来自于那一个数据库表,再相应调用FROM。
      

  3.   

    queyr1.close;
    query1.sql.clear;
    query1.sql.add('select count(*) from 教师 where username='''username''' and password='''password'''');
    qeury1.open;
    if query1.fields[0].asinteger=0 then
      form1.showmodual
    else
      begin
        queyr1.close;
        query1.sql.clear;
        query1.sql.add('select count(*) from 考生 where username='''username'''
            and  password='''password'''');
        qeury1.open;
        if query1.fields[0].asinteger=0 then
          form2.showmodual;
      end;
      

  4.   

    这是登录窗体源代码
    unit u_frmLogin;interfaceuses Windows, SysUtils, Classes, Graphics, Forms, Controls, StdCtrls,
      Buttons, Db, ADODB,Dialogs;type
      TfrmLogin = class(TForm)
        Label1: TLabel;
        txtPassword: TEdit;
        OKBtn: TButton;
        CancelBtn: TButton;
        Label2: TLabel;
        cmbUserName: TComboBox;
        ADOTable1: TADOTable;
        procedure CancelBtnClick(Sender: TObject);
        procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
        procedure OKBtnClick(Sender: TObject);
        procedure FormCreate(Sender: TObject);
      private
        { Private declarations }
        bolSuccess:Boolean; //默认为False,True表示登录成功!
        procedure ListUserName;     //列出用户帐号到ComboBox
      public
        { Public declarations }
      end;var
      frmLogin: TfrmLogin;implementationuses u_frmMain;{$R *.DFM}procedure TfrmLogin.CancelBtnClick(Sender: TObject);
    begin
      Close;        //退出登录
    end;procedure TfrmLogin.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
    begin
      CanClose:=True;       //允许关闭登录对话框。
      if not bolSuccess then        //退出登录,则关闭登录对话框,再结束程序!
        frmMain.Close;      //关闭主窗口,也就是关闭程序。
    end;procedure TfrmLogin.OKBtnClick(Sender: TObject);
    begin
      {IndexOf方法从ComboBox中查找指定的文本,如果找到则返回索引值,否则返回-1}
      if cmbUserName.Items.IndexOf(cmbUserName.Text)<0 then
        ShowMessage('请选择正确的用户帐号!')
      else
      begin
        {在数据表中将当前指针移到用户所选择的帐,至于怎么移,还有很复杂的算法,
         一口气写下来,这么多,现在正在头痛,不写了,给你一个动脑的机会!^_^!
         }
         {这里要求用户编号必须是10位,否则分离出来的用户编号就不正确!}
         if not ADOTable1.Locate('No',
            Copy(cmbUserName.Text,1,10),[]) then
         begin
           ShowMessage('找不到该帐号,请确定输入或设置的帐号是否正确!');
           exit;    //退出该过程
         end;
         
        {比较用户输入的密码!}
        if txtPassword.Text=ADOTable1.FieldByName('Password').AsString then
        begin
          bolSuccess:=True;
          Close;
        end
        else
        begin
          ShowMessage('密码错误,请重新输入!');
          {先将焦点移到别的地方,再将焦点移回密码输入框,就可以选中
           密码输入框的文本,等待输入,这是一个秘技哦!不要说没什么,打击我!哼!}
          OKbtn.SetFocus;
          txtPassword.SetFocus;
        end;
      end;
    end;procedure TfrmLogin.ListUserName;
    var
      i:Integer;
    begin
      ADOTable1.Close;
      ADOTable1.Connection:=frmMain.ADOConnection1;
      ADOTable1.TableName:='Users'; //数据表名称!
      ADOTable1.Open;       //打开数据库表
      cmbUserName.Clear;    //先清空ComboBox  for i:=0 to ADOTable1.RecordCount-1 do
      begin
        cmbUserName.Items.Add(ADOTable1.FieldByName('No').AsString+':'+
            ADOTable1.FieldByName('Name').AsString);
        ADOTable1.Next;
      end;
    end;procedure TfrmLogin.FormCreate(Sender: TObject);
    begin
      ListUserName; //列出用户帐号
    end;end.
      

  5.   

    gardenyang(太阳雨) 的方法基本可行
      

  6.   

    query1.sql.clear;
    query1.sql.add('select * from 教师 where username='''+username+''''+' and password='''+password+'''');
    qeury1.open;
    if not eof then
      form1.showmodual
    else
      begin
        queyr1.close;
        query1.sql.clear;
        query1.sql.add('select * from 考生 where username='''+username''''+
            ' and  password='''+password+'''');
        qeury1.open;
        if not eof then
          form2.showmodual;
      end;