Показать сообщение отдельно
  #3  
Старый 24.05.2017, 22:12
yurakulikovs yurakulikovs вне форума
Прохожий
 
Регистрация: 24.05.2017
Сообщения: 2
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию

Цитата:
Сообщение от Bargest
Переделал твой код.
Код:
var found: boolean;
...
UserIndex := -1;
found := false;
ResultLoginPassword:=Trim(Edit1.Text)+' '+Trim(Edit2.Text);
for i:=0 to ADODataSet1.RecordCount - 1 do
begin
    if ResultLoginPassword = ADODataSet1.FieldValues['UserName']+' '+ADODataSet1.FieldValues['UserPass'] then
    begin
        UserIndex := i; // понятия не имею, что это и зачем оно тебе нужно, но пусть будет
        found := true;
        break;
    end;
    ADODataSet1.Next;
end;
if found then begin
    Form18.Show;
    Form16.Close;
end else begin
    MessageBox (handle, 'Неверный логин или пароль!', 'Ошибка!', mb_ok + MB_ICONERROR);
end;

А сработает на другой форме, если из отредактированной коды, на новом форме 18: Данные о пользователя, как его имя, фамилия и т.д.. При авторизации и ввод под логин/пароль, и на другой форме должен быть конкретный пользователь (имя, фамилия и т.д.), на форме есть компонент DBText. Я добавил в другой форме ADOQuery (его запрос: SELECT UserNamePersonal, UserFamilyPersonal, UserGroupPersonal FROM Users WHERE IDUSer = :UserIndex) и DataSource. И в том числе тоже настроил DBText (указал в DataField, и связал с DataSource) и указал необходимые как в запросе... И сработает из отредактированной кода (пользователь вводит логин и пароль), а на новом форме уже конкретный пользователь под логина и пароля (в форме 18), его код:

Код:
procedure TForm18.FormShow(Sender: TObject);
begin
  ADOQuery1.Active:=false;
  ADOQuery1.Parameters.ParamByName('UserIndex').Value:=Unit16.UserIndex+1;
  ADOQuery1.ExecSQL;
  ADOQuery1.Active:=true;
end;
Ответить с цитированием