Pozdrawiam i z góry dziekuję pomocnym duszą :)
Przemek
Na 100% to się nie da.
W zależności od umiejętności "Twoich" userów jakoś zawsze można się do
danych dostać i je zmodyfikować.
Ale można im to utrudnić.
Najlepiej zacząć od głębokiego nurka w www.google.com => grupy dyskusyjne =>
zaawansowane wyszukiwanie, w Archiwum tej Grupy na pewno znajdziesz mnóstwo
patentów.
--
PL
Spróbuj tak (sugeruję na kopii):
1. Zabezpiecz dane na poziomie użytkownika (najprościej kreatorem zabezpieczeń)
odbierając zwykłym użytkownikom dostęp do tabel.
2. Formularze oprzyj na źródłach o konstrukcji:
SELECT ... FROM ... WITH OWNERACCESS OPTION;
--
Jacek (jacek...@onet.pl)
Mozna to zrobic, ale metoda wymaga troche wprawy w accessowych
zabebezpieczeniach.
Po pierwsze korzystasz z tabel wylacznie przez kwerendy z opcja WITH
OWNERACCESS OPTION (ustawiasz to we wlasciwosciach kwerendy za pomoca
Uaktywnij uprawnienia: Wlasciciela). W oknie bazy danych dostep do tabel
jest absolutnie zablokowany, nie mozna otworzyc ani w widoku, ani do
projektowania.
Po drugie, jako warunek takiej kwerendy podajesz funkcje sprawdzajaca, czy
kwerenda jest odczytywana w odpowiedni sposob. W najprostrzym przypadku
Twoja kwerenda moze miec postac:
SELECT * FROM Tabela1
WHERE MojaFun()=True
WITH OWNERACCESS OPTION;
Oczywiscie do modulow nie dajesz zadnych uprawnien. Co bedzie zawierac
funkcja MojaFun(), to zalezy juz wylacznie od Twojej wyobrazni. Mozesz
wymyslec setki warunkow, ktore beda spelnione wylacznie w okreslonych
sytuacjach, np:
Public Function MojaFun() As Boolean
On Error Resume Next
MojaFun = (Forms!Form1.Tag= "OK")
End Function
Powyzsza funkcja spowoduje, ze kwerenda pokaze rekordy, wylacznie wtedy,
jesli otwarty jest Form1 i jego wlasciwosc Tag jest ustawiona na "OK". W
innych przypadkach kwerenda nie zwroci zadnych wartosci.
K.P.
Mozna to zrobic, ale metoda wymaga troche wprawy w accessowych
zabebezpieczeniach. Z koniecznosci podam opis dosc ogolny - musisz sam dojsc
szczegolow.
Po pierwsze korzystasz z tabel wylacznie przez kwerendy z opcja WITH
OWNERACCESS OPTION (ustawiasz to we wlasciwosciach kwerendy za pomoca
Uaktywnij uprawnienia: Wlasciciela). W oknie bazy danych dostep do tabel
jest absolutnie zablokowany, nie mozna otworzyc ani w widoku, ani do
projektowania.
Po drugie, jako warunek takiej kwerendy podajesz funkcje sprawdzajaca, czy
kwerenda jest odczytywana w odpowiedni sposob. W najprostrzym przypadku
Twoja kwerenda moze miec postac:
SELECT * FROM Tabela1
WHERE MojaFun()=True
WITH OWNERACCESS OPTION;
Oczywiscie do modulow nie dajesz zadnych uprawnien. Co bedzie zawierac
funkcja MojaFun(), to zalezy juz wylacznie od Twojej wyobrazni. Mozesz
wymyslec milion warunkow, ktore beda spelnione wylacznie w okreslonych
sytuacjach, np:
Public Function MojaFun() As Boolean
On Error Resume Next
MojaFun = (Forms!Form1.Tag= "OK")
End Function
Powyzsza funkcja spowoduje, ze kwerenda pokaze rekordy, wylacznie wtedy,
jesli otwarty jest Form1 i jego wlasciwosc Tag jest ustawiona na "OK". W
innych przypadkach kwerenda nie zwroci zadnych wartosci.
Krzysztof Pozorek