Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 22.05.2017, 01:02   #1
Yura158
 
Регистрация: 23.04.2017
Сообщений: 3
По умолчанию Авторизация при прохождения теста

Я тут немного уже ломаю голову... При нажатии кнопку "Тест", ввод под логин/пароль и на другой форме должен быть конкретный пользователь (имя, фамилия и т.д.), на форме есть компонент DBText. При открытии формы, вообще пусто DBText, но я добавил ADOQuery (его запрос: SELECT UserNamePersonal, UserFamilyPersonal, UserGroupPersonal FROM Users WHERE IDUSer = :UserIndex) и DataSource. И в том числе тоже настроил DBText (указал в DataField, и связал с DataSource) и указал необходимые как в запросе... Но безрезультатно...
Или можно заменить вместо DBText на Label
P.S. Просто я новичок, и не все хорошо понимаю, пытаюсь разобраться, но увы как немного ломаю голову с базой данных Access... Не судите так строго!.. Помогите пожалуйста!!!
P.S.S. Буду очень благодарен!

1-ая форма:
Код:
var
  Form16: TForm16;
  UserIndex:integer;
 
implementation
 
uses Unit18, Unit19;
 
{$R *.dfm}
 
procedure TForm16.BitBtn1Click(Sender: TObject);
begin
  if (Length(Trim(Edit1.Text)) = 0) or (Length(Trim(Edit2.Text)) = 0) then
  MessageBox(Handle, 'Обязательные поля не заполнены!', 'Ошибка', mb_OK + mb_ICONWARNING)
else
  begin
    with ADOQuery1 do
      begin
        SQL.Clear;
        SQL.Add('SELECT IDUSer as UserIndex FROM Users WHERE (UserName = :Login) AND (UserPass = :Password)');
        Parameters.ParamByName('Login').Value := Edit1.Text;
        Parameters.ParamByName('Password').Value := Edit2.Text;
        Open;
      end;
     if not ADOQuery1.isEmpty then
       begin
         UserIndex:= ADOQuery1['UserIndex'];
         Form19.Show;
         Form16.Close;
        end
      else
        MessageBox (Handle, 'Неверный логин или пароль!', 'Ошибка!', mb_OK + MB_ICONERROR);
  end;
end;
2-ая форма (буду делать тест, но пока что в режиме проверки работы):
Код:
procedure TForm19.BitBtn1Click(Sender: TObject);
begin
  Form18.Show;
  Form19.Close;
end;
3-я форма (уже кто и такой пользователь, который ввел логин/пароль из 1-ой формы, согласно на его имя, фамилия и т.д. - в нем содержится компонент DBText -- связал с DataSource, и указал необходимые в DataField в той же 3-форме есть компонент ADOQuery и DataSource):
Код:
procedure TForm18.FormShow(Sender: TObject);
begin
  ADOQuery1.Active:=false;
  ADOQuery1.Parameters.ParamByName('UserIndex').Value:=Unit16.UserIndex+1;
  ADOQuery1.ExecSQL;
  ADOQuery1.Active:=true;
end;
Снизу есть вложение проекта
Вложения
Тип файла: rar Delphi.rar (987.2 Кб, 7 просмотров)
Yura158 вне форума Ответить с цитированием
Старый 22.05.2017, 08:07   #2
Sciv
Старожил
 
Аватар для Sciv
 
Регистрация: 16.05.2012
Сообщений: 3,211
По умолчанию

Ларчик открывался просто: Вы невнимательны

Код получения UserIndex в Unit16:

Код:
         UserIndex:= ADOQuery1['UserIndex'];
и код получения данных по индексу в Unit18:

Код:
  ADOQuery1.Parameters.ParamByName('UserIndex').Value:=Unit16.UserIndex + 1;
Дальше сами справитесь?

P.S. Учитесь пользоваться отладчиком, я поставил брякпойнт на момент получения UserIndex и нашёл грабли меньше, чем за пять минут. Проект дольше открывался :D

P.P.S. Справедливости ради отмечу, что я тоже особой внимательностью не отличился - все эти данные Вы уже выложили в своём посте, можно было вообще в проект не заглядывать
Начал решать проблему с помощью регулярных выражений. Теперь решаю две проблемы...

Последний раз редактировалось Sciv; 22.05.2017 в 08:10.
Sciv вне форума Ответить с цитированием
Старый 22.05.2017, 20:32   #3
Yura158
 
Регистрация: 23.04.2017
Сообщений: 3
По умолчанию Авторизация при прохождения теста

Ну сомневаюсь, все я мучаюсь и никак не могу нормально сделать...
Yura158 вне форума Ответить с цитированием
Старый 22.05.2017, 20:34   #4
Yura158
 
Регистрация: 23.04.2017
Сообщений: 3
По умолчанию

Цитата:
Сообщение от Sciv Посмотреть сообщение
Ларчик открывался просто: Вы невнимательны

Код получения UserIndex в Unit16:

Код:

UserIndex:= ADOQuery1['UserIndex'];

и код получения данных по индексу в Unit18:

Код:

ADOQuery1.Parameters.ParamByName('U serIndex').Value:=Unit16.UserIndex + 1;

Дальше сами справитесь?

P.S. Учитесь пользоваться отладчиком, я поставил брякпойнт на момент получения UserIndex и нашёл грабли меньше, чем за пять минут. Проект дольше открывался :D

P.P.S. Справедливости ради отмечу, что я тоже особой внимательностью не отличился - все эти данные Вы уже выложили в своём посте, можно было вообще в проект не заглядывать
Сомневаюсь что ничего у меня не получится... Я так не особо разбираюсь
Yura158 вне форума Ответить с цитированием
Старый 23.05.2017, 07:25   #5
Sciv
Старожил
 
Аватар для Sciv
 
Регистрация: 16.05.2012
Сообщений: 3,211
По умолчанию

Цитата:
Сообщение от Yura158 Посмотреть сообщение
Сомневаюсь что ничего у меня не получится... Я так не особо разбираюсь
Вы, не особо разбираясь, уже нормально так 18 юнитов в проекте запилили
Начал решать проблему с помощью регулярных выражений. Теперь решаю две проблемы...
Sciv вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Copy или Move при парсинге теста Pcrepair Общие вопросы Delphi 1 29.01.2013 15:12
Написание в Delphi программы для создания и прохождения теста. Fenrix Помощь студентам 2 15.11.2011 07:18
Расчет прохождения. Abuhamed PHP 17 04.02.2011 14:57
при вводе в edut фамилии человека из 35 группы 1ая кнопка теста становилась видимая asd178 БД в Delphi 2 29.04.2009 14:07
Попал в тупик при создании теста dimitriy1987 Помощь студентам 19 26.10.2007 09:47