Pomoc w sprawie uprawnień w kodzie Delphi

0

Witam koledzy - jestem początkujący i uczący się w Delphi i mam pewien problem, korzystam z bazy danych **ACCESS **
potrzebuję zrobić blokadę w MainMenu że jak klikniesz na zakładkę ADD i zalogujesz się administrator to pokazuje ci się druga forma i tylko ty możesz dodać usera
zrobiłem
taki kod i kaplica :
I nie mogę go uruchomić !
między nawiasami form1 a koniec 'login' mam błąd
[dcc32 Error] Unit3.pas(33): E2012 Type of expression must be BOOLEAN

procedure TForm3.ADD1Click(Sender: TObject);
begin
  if ((form1.qrylogin.Locate = 'login') or (form1.qrylogin.Locate='Klient')) then
  begin
    form4.showmodal;
  end;!
end;

end. 

Przechwytywanie.PNG
Przechwytywanie2.PNG

1

No to się zdecyduj, bo we wklejonym kodzie masz Locate przed znakami równości, a na zrzucie ekranu go nie ma.

0

@furious programming: bez locate robiłem i z locate i tak nie działa ...

0

„Nie działa” to nie jest techniczna odpowiedź. Ale kawkę właśnie dopijam, więc z fusów powróżyć mogę.

0

@furious programming: Po prostu kombinowałem z Locate i bez tak jak na rysunku też wywala i ten sam błąd...

0

Sama konstrukcja instrukcji warunkowej jest prawidłowa.

Nie wiem czym jest to qrylogin i co zwraca, ale na pewno nie łańcuch znaków (qrylogin.Locate też nie).

0

@furious programming: qrylogin to jest kontrolka ADOquery tak ją nazwałem

1

Kompletnie nie rozumiem o co chodzi?
Z tego co się domyślam, chcesz po kliknięciu w ADD wyświetlić formę do podania być może hasła aby sprawdzić czy to administrator i jak tak to pozwolić mu dodać użytkownika? W zasadzie tak się nie robi, poza malutkim wyjątkiem który nazywa się "podniesienie uprawnień". Tak stosuje np. w programach z interfejsem dotykowym gdzie zalogowany jest np. zwykły kasjer i czasami jak chce dać np. rabat to musi zawołać kierownika czy tam kogoś z odpowiednimi uprawnieniami który chwilowo "podniesie uprawnienia".

Standardowo, użytkownik powinien zalogować się do programu i w tym momencie otrzymać odpowiednie uprawnienia do różnych funkcji. Taką tablicę z uprawnieniami przechowujesz sobie w programie i przed każdą akcją sprawdzasz czy użytkownik ma do tego uprawniania.
W tym momencie możesz zdecydować czy chcesz aby dostęp do akcji np. w menu czy na buttonie był aktywny cały czas a tylko po kliknięciu wyświetlasz odpowiedni komunikat o braku uprawnień czy też "wyszarzasz" odpowiednie pozycje menu i buttony do których użytkownik nie ma dostępu.

No dobra, załóżmy jednak że to będzie tylko jedna akcja w programie obwarowana sprawdzeniem uprawnień (chociaż w to nie wierzę) i nie ma sensu robić żadnego mechanizmu iprawnień.
Używasz do komunikacji z bazą query w takim razie po prostu sprawdź czy użytkownik to administrator przed wykonaniem tej akcji np. tak:

with qryPytanie, SQL do
begin
  Clear;
  Add('select stanowisko from uzytkownicy where login=:login');
  ParamByName('login').AsString:=login;
  Open;
end;

if qryPytanie.FieldByName('stanowisko').AsString = 'administrator' then
  frmDodajUzytkownika.ShowModal;
0

Najpierw dla systemu powinieneś być - Twoja aplikacja dostępna jako administrator. Bo może masz dobry kod, a na różnych komputerach będzie się zachowywał dziwacznie i stracisz dużo czasu, a jest poprawny.... Próbowałeś z tym podwójne uwierzytelnienie, jako admin systemu i admin dostępu do bazy:

 uses shellapi;

 ShellExecute(Handle, 'runas', pchar(ExtractFilePath(Application.ExeName)+'....exe'), nil, nil, SW_SHOWNORMAL);

1 użytkowników online, w tym zalogowanych: 0, gości: 1