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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 28.10.2009, 09:19   #1
Len@09
Пользователь
 
Регистрация: 28.10.2009
Сообщений: 28
По умолчанию Разграничение прав доступа

Всем привет!
К своей программе я создала форму для ввода пользователя и пароля.
В Access создала таблицу: ТаблицаПользователи. В ней создала 2-х пользователей: User и Инспектор и задала им пароли. В Delphi создала новую форму, поместила на нее ADOConnection1, ADOQuery (UserQuery), Edit1(LoginEdit) Edit2(PasswordEdit), 2 кнопки (Вход и Отмена).
Подскажите, как сделать, чтоб у одного пользователя был полный доступ, а у другого только просмотр?
Len@09 вне форума Ответить с цитированием
Старый 28.10.2009, 09:27   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

А что значит "полный доступ"?
Ввел пользователь пароль, прога пусть его анализирует и в зависимости от него выполняет или не выполняет команды.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 28.10.2009, 09:37   #3
Len@09
Пользователь
 
Регистрация: 28.10.2009
Сообщений: 28
По умолчанию

Наверное, не правильно был задан вопрос. У меня 2 пользователя, одному из них можно только просматривать данные, которые занес другой пользователь.
Len@09 вне форума Ответить с цитированием
Старый 28.10.2009, 10:24   #4
BARNEY
Участник клуба
 
Регистрация: 23.04.2009
Сообщений: 1,058
По умолчанию

ну создай 2 ADOConnection и ADOQuery

в первом случаи одни команды в другом другие и всё
Если вам человек помог, не стесняйтесь говорить спасибо (весы под аватаром)
BARNEY вне форума Ответить с цитированием
Старый 28.10.2009, 11:26   #5
Len@09
Пользователь
 
Регистрация: 28.10.2009
Сообщений: 28
По умолчанию

В Access создала еще одну таблицу:
Пользователиогранич.
Key – Счетчик
Логин – Текстовый
Пароль – Текстовый
Доступ – Логический.
Завела пользователя и задала ему пароль. В Delphi в DataModule4 добавила 2 DataSource и 2 ADOTable (User и Userogran), все подключила.
По кнопке Вход такой код:
Код:
procedure TUserForm.SpeedButton1Click(Sender: TObject);
begin
If (LoginEdit.Text<>'') and (PasswordEdit.Text<>'') then 
 begin
 UserQuery.Active:=false;
 UserQuery.Parameters.ParamByName('log').Value:=LoginEdit.Text;
 UserQuery.Active:=true;
   If UserQuery.RecordCount<>0 then
     begin
      If UserQuery.FieldByName('Пароль).AsString=PasswordEdit.Text then begin
         login:=LowerCase(LoginEdit.Text);
         If UserQuery.FieldByName('Доступ').AsString='True' then  Form1.ShowModal
            else Dostup:=false;
             Close;
       end
          else Showmessage('Пароль не верный!');
     end;
 end
    else ShowMessage('Введите имя пользователя и пароль');
end;
По этой кнопке, второго пользователя (User) вобще не пускает.
Подскажите, может что-то не доделала?
Len@09 вне форума Ответить с цитированием
Старый 28.10.2009, 13:35   #6
Evgeniy26
Форумчанин
 
Аватар для Evgeniy26
 
Регистрация: 29.05.2009
Сообщений: 384
По умолчанию

Посмотри безопасность в Access. Настраивай всю политику безопасности на уровне БД. Зачем что-то мудрить если уже все сделано. Microsoft Office Access 2007 -> Входишь в свою базу -> Работа с базами данных -> Пользователи и разрешения -> Разрешения, и там если я не ошибаюсь на уровне каждой таблицы можно настроить разрешения, для определенного пользователя.
Evgeniy26 вне форума Ответить с цитированием
Старый 29.10.2009, 09:58   #7
Len@09
Пользователь
 
Регистрация: 28.10.2009
Сообщений: 28
По умолчанию

Цитата:
Сообщение от BARNEY Посмотреть сообщение
ну создай 2 ADOConnection и ADOQuery

в первом случаи одни команды в другом другие и всё
Создала 2 ADOConnection и ADOQuery (UserQuery и UserQuery1).
Теперь с кодом проблемы. По кнопке Вход теперь такой код:
Код:
procedure TUserForm.SpeedButton1Click(Sender: TObject);
begin
If (LoginEdit.Text<>'') and (PasswordEdit.Text<>'') then //поля не пустые
 begin
 UserQuery.Active:=false;
 UserQuery.Parameters.ParamByName('log').Value:=LoginEdit.Text;
 UserQuery.Active:=true;
   If UserQuery.RecordCount<>0 then
     begin
      If UserQuery.FieldByName('Пароль').AsString=PasswordEdit.Text then 
begin
         login:=LowerCase(LoginEdit.Text);
         If UserQuery.FieldByName('Доступ').AsString='True' then  Form1.ShowModal//есть доступ
            else Dostup:=false;
            Close;
      end
          else Showmessage('Пароль не верный!');
     end;
 end
    else ShowMessage('Введите имя пользователя и пароль!')//пустые поля
end

or

If (LoginEdit.Text<>'') and (PasswordEdit.Text<>'') then //поля не пустые
begin
 UserQuery1.Active:=false;
 UserQuery1.Parameters.ParamByName('log').Value:=LoginEdit.Text;
 UserQuery1.Active:=true;
   If UserQuery1.RecordCount<>0 then
     begin
      If UserQuery1.FieldByName('Пароль').AsString=PasswordEdit.Text then
      begin
         login:=LowerCase(LoginEdit.Text);
         If UserQuery1.FieldByName('Доступ').AsString='True' then  Form1.ShowModal//есть доступ
            else Dostup:=false;
            Close;
      end
          else Showmessage('Пароль не верный!');
     end;
end;
end.
Что тут не так?
Len@09 вне форума Ответить с цитированием
Старый 29.10.2009, 10:27   #8
soleil@mmc
SQL-коддинг
Участник клуба
 
Регистрация: 16.01.2009
Сообщений: 1,192
По умолчанию

1) было бы интересно посмотреть на текст запроса
2) Close; будет выполняться всегда - если пароль неверный и если юзер закрыл форму Form1
soleil@mmc вне форума Ответить с цитированием
Старый 29.10.2009, 11:05   #9
Len@09
Пользователь
 
Регистрация: 28.10.2009
Сообщений: 28
По умолчанию

Код:
Select*
From ТаблицаПользователи
Where Логин Like:Log
При компиляции выдает такие ошибки:
[Error] Unit14.pas(87): Operator not applicable to this operand type
[Error] Unit14.pas(90): ';' expected but '.' found
[Error] Unit14.pas(92): Declaration expected but end of file found
[Fatal Error] NalogProject.dpr(20): Could not compile used unit 'Unit14.pas'

Последний раз редактировалось Stilet; 29.10.2009 в 11:20.
Len@09 вне форума Ответить с цитированием
Старый 29.10.2009, 11:21   #10
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
[Error] Unit14.pas(87): Operator not applicable to this operand type
На какой строке то эти ошибки выползают?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Разграничение прав на области листа Chelentano Microsoft Office Excel 11 07.02.2013 10:33
Разграничение доступа vsurmach БД в Delphi 6 29.11.2008 12:01
Просмотр прав на папку AstraBon Безопасность, Шифрование 0 10.06.2008 08:46
В чем я не прав?С++ diden Помощь студентам 3 23.05.2008 18:32
Вопрос по Менюшке ограничение прав доступа danswin Общие вопросы Delphi 17 03.10.2007 16:05