Форум программистов, компьютерный форум, киберфорум
Delphi: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.61/18: Рейтинг темы: голосов - 18, средняя оценка - 4.61
0 / 0 / 0
Регистрация: 26.10.2016
Сообщений: 72

Авторизация Delphi БД Access

11.06.2019, 00:09. Показов 3690. Ответов 11
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
проблема такая:
Создал в Access таблицу 'users'. там есть данные о логине и о пароле.
В дельфи создал форму "авторизация". В нем есть combobox1 где вводят логин и edit1 где вводят пароль, связка с БД есть(ADOConnection1), при нажатии кнопки если логин и пароль совпадают надо открыть вторую форму. У каждого есть отдельный логин и пароль. и возможно ли разделить права, допустим добавить в таблицу "users" столбец "role" и вставить там admin и user, и исходя из этого пользователю с ролью "user" были доступны не все кнопки
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
11.06.2019, 00:09
Ответы с готовыми решениями:

Access, delphi, БД, авторизация
В общем у меня проблема такая: Создал в Access таблицу 'users'. там есть данные о логине и о пароле. В дельфи создал форму...

Авторизация в Delphi 7 через Access БД
Добрый вечер, подскажите как сделать так, чтобы работала авторизация через access файл где указан логин и пароль. Суть программы в том,...

Авторизация пользователей в Delphi (из БД access)
Доброй ночи друзья, пишу небольшую программку, и захотел прикрутить форму авторизации, немного запутался, помогите пожалуйста разобраться....

11
 Аватар для Пытливый
3763 / 2267 / 705
Регистрация: 29.05.2013
Сообщений: 9,622
11.06.2019, 00:26
Сделать при желании можно что угодно, только если у вас права на таблицу, а не на записи в таблице, то правила доступа имеет смысл оформить в отдельную таблицу примерно такого вида: КодПользователя, ИмяТаблицы, Права
0
0 / 0 / 0
Регистрация: 26.10.2016
Сообщений: 72
11.06.2019, 00:34  [ТС]
Цитата Сообщение от Пытливый Посмотреть сообщение
КодПользователя, ИмяТаблицы, Права
да, я именно так и сделал, теперь вопрос в создании авторизации и разграничении прав
0
0 / 0 / 0
Регистрация: 26.10.2016
Сообщений: 72
11.06.2019, 00:44  [ТС]
Подскажите где ошибка вот код:

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
procedure TForm13.Button1Click(Sender: TObject);
begin
ADOQuery.Close;
  ADOQuery.SQL.Text:='SELECT * FROM table_users WHERE login = :p_login AND password = :p_passw ';
  if (Form13.Edit1.Text <> '') and (Form13.Edit2.Text <> '' )
  then
  begin
    ADOQuery.Parameters.ParamByName ('p_login').Value := Form13.Edit1.Text;
    ADOQuery.Parameters.ParamByName('p_passw').Value := Form13.Edit2.Text;
    try
      ADOQuery.Open;
    Except
      ShowMessage('Не удалось открыть таблицу пользователей');
      Exit;
    end;
    if ADOQuery.RecordCount > 0 
    then
    begin
      ShowMessage('Вход успешно выполнен');
      Form13.Visible := False;
      Form1.Visible := True;
    end
    else
    begin
      ShowMessage('Неправильный логин или пароль');
      Form13.Edit1.Text := '';
      Form13.Edit2.Text := '';
    end;
  end
  else
    ShowMessage('Пустые поля логина\пароля не допускаются');
  end;
 
end.
Миниатюры
Авторизация Delphi БД Access  
0
Модератор
 Аватар для D1973
9929 / 6467 / 2457
Регистрация: 21.01.2014
Сообщений: 27,423
Записей в блоге: 3
11.06.2019, 04:50
Лучший ответ Сообщение было отмечено st1x как решение

Решение

А так?
Delphi
1
2
3
4
5
6
7
8
if (Edit1.Text <> '') and (Edit2.Text <> '' )  then
  begin
    ADOQuery.SQL.Text:='SELECT * FROM table_users WHERE (login = :p_login) AND (password = :p_passw)';
    ADOQuery.Parameters.ParamByName ('p_login').Value := Edit1.Text;
    ADOQuery.Parameters.ParamByName('p_passw').Value := Edit2.Text;
    try
      ADOQuery.Open;
//Дальше без изменений...
1
 Аватар для Пытливый
3763 / 2267 / 705
Регистрация: 29.05.2013
Сообщений: 9,622
11.06.2019, 10:49
Лучший ответ Сообщение было отмечено st1x как решение

Решение

Думается мне, что это не поможет. Есть предположение, что использовать в качестве имен полей слова login,password не рекомендуется. И можно еще пересоздать параметры, после формирования текста запроса:
Delphi
1
2
ADOQuery.SQL.Text:='SELECT * FROM table_users WHERE (login = :p_login) AND (password = :p_passw)';
ADOQuery.Parameters.ParseSQL(ADOQuery.SQL.Text, True);
2
0 / 0 / 0
Регистрация: 26.10.2016
Сообщений: 72
11.06.2019, 21:39  [ТС]
Цитата Сообщение от Пытливый Посмотреть сообщение
имен полей слова login,password
а как посоветуете сделать ?
0
Модератор
 Аватар для D1973
9929 / 6467 / 2457
Регистрация: 21.01.2014
Сообщений: 27,423
Записей в блоге: 3
11.06.2019, 21:44
Цитата Сообщение от st1x Посмотреть сообщение
а как посоветуете сделать
А что, предложенный мной вариант не сработал?
0
0 / 0 / 0
Регистрация: 26.10.2016
Сообщений: 72
11.06.2019, 21:48  [ТС]
Цитата Сообщение от D1973 Посмотреть сообщение
А что, предложенный мной вариант не сработал?
SQL
1
ADOQuery.Parameters.ParseSQL(ADOQuery.SQL.Text, TRUE);
с добавлением этого идеально работает, ещё вопрос, вот я добавил столбец role(роль) в таблицу "table_users" как сделать чтобы при входе он проверял если в столбце роль у этого пользователя стоит admin то доступно всё, а если user то некоторые кнопки и формы не доступны
0
Модератор
 Аватар для D1973
9929 / 6467 / 2457
Регистрация: 21.01.2014
Сообщений: 27,423
Записей в блоге: 3
12.06.2019, 04:41
Delphi
1
2
3
4
5
6
7
8
if ADOQuery.FieldByName('Role').AsString = 'admin' then
 begin
   //тут делаете все доступным
 end
else
 begin
  //тут что-то ограничиваете
 end;
0
0 / 0 / 0
Регистрация: 26.10.2016
Сообщений: 72
12.06.2019, 19:32  [ТС]
Цитата Сообщение от D1973 Посмотреть сообщение
1
спасибо большое, но я незнаю как сделать проверку столбца role
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
procedure TForm13.Button1Click(Sender: TObject);
begin
ADOQuery.Close;
  ADOQuery.SQL.Text:='SELECT * FROM table_users WHERE login = :p_login AND password = :p_passw ';
  if (Edit1.Text <> '') and (Edit2.Text <> '' )  then
  begin
    ADOQuery.SQL.Text:='SELECT * FROM table_users WHERE (login = :p_login) AND (password = :p_passw)';
    ADOQuery.Parameters.ParamByName ('p_login').Value := Edit1.Text;
    ADOQuery.Parameters.ParamByName('p_passw').Value := Edit2.Text;
    try
      ADOQuery.Open;
    Except
      ShowMessage('Не удалось открыть таблицу пользователей');
      Exit;
    end;
    if ADOQuery.RecordCount > 0 
    then
    begin
      ShowMessage('Вход успешно выполнен');
      Form13.Visible := False;
      Form1.Visible := True;
    end
    else
    begin
      ShowMessage('Неправильный логин или пароль');
      Form13.Edit1.Text := '';
      Form13.Edit2.Text := '';
    end;
  end
  else
    ShowMessage('Пустые поля логина\пароля не допускаются');
  end;
 
end.
0
Модератор
 Аватар для D1973
9929 / 6467 / 2457
Регистрация: 21.01.2014
Сообщений: 27,423
Записей в блоге: 3
13.06.2019, 04:05
Цитата Сообщение от st1x Посмотреть сообщение
я незнаю как сделать проверку столбца role
А я Вам что показал в посте #10?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
13.06.2019, 04:05
Помогаю со студенческими работами здесь

Авторизация в базе данных Delphi u Access
Не знаю как сделать Авторизацию в Delphi с проверкой из Access.Ну допустим кнопки 2 делаю + 2 edit поля код там закину на ВОЙТИ, а как...

SQL-запрос в Delphi и в Access один и тот же, но в Delphi не работает
ри обращение к базе в Access я использую код: with ADOQueryMain do begin Active:=false; SQL.Clear; SQL.Add('SELECT Code,...

Авторизация в Access
Люди, нужна помощь с кодом VBA для авторизации, не могу разобраться что не так делаю Во время выполнения кода выделяется строчка под...

Авторизация Access
помогите ! у меня есть бд я хочу сделать авторизацию я создал таблицу логин в ней есть поля логин и пароль потом сделал форму авторизация...

Авторизация в БД Access
Добрый день! Нужна помощь, есть программа, к ней подключена БД access, есть форма авторизации, требуется сделать так, чтобы брались...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
Отображение реквизитов в документе по условию и контроль их заполнения
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеСпецтехники", разработанного в конфигурации КА2. Данный документ берёт данные из другого нетипового документа. . .
Фото всей Земли с борта корабля Orion миссии Artemis II
kumehtar 04.04.2026
Это первое подобное фото сделанное человеком за 50 лет. Снимок называют новым вариантом легендарной фотографии «The Blue Marble» 1972 года, сделанной с борта корабля «Аполлон-17». Новое фото. . .
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать программный контроль на предмет проведения документа. . .
Программный контроль заполнения реквизита табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать контроль заполнения реквизита "ПричинаСписания". . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: при создании документов установить период списания автоматически. . .
Вывод данных в справочнике через динамический список
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2. Задача: вывести данные из ТЧ нетипового документа. . .
Программное заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению. На форме документа создается. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru