• ivkinai76 © (20.02.13 22:03) [0]
    База данных сделана в MS ACCESS.
    Оболочка под нее в Дельфи.
    При запуске происходит запрос на авторизацию. Выбирается режим входа в систему и в зависимости от этого-либо пользовательский режим или администратора. В пользовательском только просмотр.

    Код программы:
    procedure TForm1.Button1Click(Sender: TObject);
    var
    log,pass:string[20];
    begin
    log:=ComboBox1.Text;
    pass:=Edit2.Text;
    with Form1.ADOQuery1 do begin
    close;
    SQL.Clear;
    SQL.Add('Select *');
    SQL.Add('FROM users');
    SQL.Add('WHERE ((log='''+log+''') AND (pass='''+pass+'''))');
    Open;
    end;
    if ADOQuery1.RecordCount<>0 then
    begin
    if ADOQuery1.FieldByName('log').AsString = 'admin' then
     Form2.Show
    else if ADOQuery1.FieldByName('log').AsString = 'user' then
     Form3.Show;
    end
    else begin
    ShowMessage('Неправильно введено имя пользователя или пароль');
    ComboBox1.Text:='';
    Edit2.Text:='';
    end;
    end;
    procedure TForm1.Button2Click(Sender: TObject);
    begin
    Application.Terminate;
    end;

    procedure TForm1.FormCreate(Sender: TObject);
    var
    i:integer;
    begin
    ComboBox1.Items.Clear;
    ADOQuery1.Close;
    ADOQuery1.SQL.Clear;
    ADOQuery1.SQL.Add('select log from users');
    ADOQuery1.Open;
    ADOQuery1.First;
    for  i := 0 to ADOQuery1.RecordCount - 1 do
    begin
    ComboBox1.Items.Add(ADOQuery1.FieldByName('log').AsString);
    ADOQuery1.Next;
    end;
    ADOQuery1.Close;

    end;

    end.

    Может немного коряво. Но прошу заранее извинить-только учусь программировать.
    Вопрос такой. Даже два.
    1. Как сделать, чтобы при вводе правильного логина и пароля-окно авторизации закрывалось и оставалось только форма с базой данных.
    2. Как сделать, чтобы вместо вводимого пароля высвечивались звездочки.
  • Ega23 © (20.02.13 22:11) [1]

    > 2. Как сделать, чтобы вместо вводимого пароля высвечивались звездочки.


    TEdit.PasswordChar


    > 1. Как сделать, чтобы при вводе правильного логина и пароля-
    > окно авторизации закрывалось и оставалось только форма с
    > базой данных.


    Сделай модальную форму с проверкой, и дальше либо создавай главную форму, либо выходи.
  • Медвежонок Пятачок © (20.02.13 22:15) [2]
    1. Как сделать, чтобы при вводе правильного логина и пароля-окно авторизации закрывалось и оставалось только форма с базой данных.

    Типа как отпилить сук на котором сидишь?

    С учетом того, что первая форма - это application.mainform, то открыть вторую или третью а затем закрыть первую = завершить работу приложения.
  • Podgoretsky (21.02.13 08:40) [3]
    Аутентификацию сначала бы пройти.
  • O'ShinW © (21.02.13 09:24) [4]
    >> Медвежонок Пятачок ©   (20.02.13 22:15) [2]
    зачем?

    program Project1;

    uses
     Forms,
     Unit1 in 'Unit1.pas' {frmLogin},
     Unit2 in 'Unit2.pas' {frmWork};

    {$R *.res}

    var
     frmLogin: TfrmLogin;
    begin
     frmLogin := TfrmLogin.Create(nil);
     if frmLogin.ShowModal <> 1 then
      Exit;

     Application.Initialize;
     //Application.CreateForm(TfrmLogin, frmLogin);
     Application.CreateForm(TfrmWork, frmWork);
     Application.Run
  • Медвежонок Пятачок © (21.02.13 09:56) [5]
    >зачем?

    Чего зачем?

    Или ты мне показываешь как надо?
  • O'ShinW © (21.02.13 09:57) [6]
    Чего зачем?

    > а затем закрыть первую = завершить работу приложения



    > ты мне показываешь как надо?

    автору
  • Slym © (22.02.13 08:09) [7]
    http://www.programmersforum.ru/showthread.php?t=228422

    я бы в users завел бульеновое поле Admin

    и будет
    if ADOQuery1.FieldByName('Admin').AsBo olean then

    и кстати универсальный пароль будет ")) or((""="
    подумай сам почему
    это называется SQLInject и фиксится использованием параметров
Есть новые Нет новых   [134431   +9][b:0][p:0]