Newsgroup: it.comp.appl.access
Titolo: Query With Sib Option

C'e' qualcosa che mi sfugge nella soluzione di Sib sul sito comune circa la
PW su query con OWNER ACCESS OPTION.
La logica e' chiara: rendere la query eseguibile solo con una password
controllata da una funzione. Se siamo su un MDE dovrebbe essere una buona
blindatura.
Solo che...
La PW viene chiesta con un IIF che chiama la funzione passandogli la PW. I
casi sono due: o la PW non la scrivo ma la lascio come parametro, quindi mi
verra' chiesto di inserirla a mano anche se ho lanciato la query da codice.
Oppure la scrivo dentro la query ma la query sara', ovviamente, eseguibile
da chiunque.
Inoltre e' vero che se non ho i diritti sulla struttura della query posso
solo eseguirla (in quanto WITH OWNER ACCESS), ma e' anche vero che posso
leggere l'SQL, quindi la PW che c'e' scritta dentro.
Ora non so se e' una macroscopica svista di Sib che non si e' accorto che
l'utente non propietario della query non puo' leggerne la struttura ma l'SQL
si (la possibilita' viene presentato dopo l'esecuzione) oppure se mi sono
perso qualche pasaggio.
Nel secondo caso chiedo lumi all'ideatore della funzione (Sib), nel primo
caso (toppa di Sib) avrei trovato una soluzione che mi sembra buona.
Nella funzione che confronta la PW con quella passata dalla query ci piazzo
una variabile pubblica stringa PW2 con valore "" anziche' la stringa in
chiaro. Questo vuol dire che se tizio lancia la query il confronto va a
vuoto e la funzione restituisce false.
Viceversa, quando voglio chiamare da codice la mia query setto
preventivamente PW2 = password_scritta_nella_query e il confronto
restituira' True.
In pratica:
Public PW2 As String
Function pippo()
PW2 = "ciccio"
DoCmd.OpenQuery "query1" '*** oppure db.execute o quello che volete!
PW2 = ""
End Function
Public Function ParAcc(PW As String) As Boolean
If PW = PW2 Then '****Questa e' la modifica a Sib
ParAcc = True
Else
    ParAcc = False
End Function
Spero di essere stato chiaro...:-)
Attendo pareri da Sib e da quanti interessati all'argomento.
Saluti.
Luciano
(DOC)

 perso qualche pasaggio.
[cut]
Mi pare di capire che il tuo problema sia quello di fare aprire la query
senza fare introdurre manualmente la PW. Il mio scopo era invece proprio
quello: costringere l'utente ad inserire una password ogni volta che apre la
query.
A questo punto il problema non si pone, e' l'utente che deve conoscere la
password.
Per problematiche diverse occorre elaborare soluzioni diverse.
tra l'altro, nella mia soluzione, la funzione consente tre tentativi, poi si
deve riavviare il db e rirpovare.
Oppure, inserire una inputbox dove l'utente inserisce a mano la PW
all'interno della funzione, in questo modo non e' possibile scnnare da
codice la funzione perche' apre una inputbox da riempire a mano ogni volta.
Ciao, Sib
PS, se vuoi ti mando un db protetto cosi' e vedi se riesci a leggere i dati.

 PS, se vuoi ti mando un db protetto cosi' e vedi se riesci a leggere i
dati.
Quanto mi dai se te lo scardino io?
Antonio
P.S.
Federico, si fa a metà, ok?

 Federico, si fa a metà, ok?
ok,
cosi' faccio uno e mezzo, in quanto il mio intero l'ho gia' avuto ;-))
-- 
Federico
--------------------------------------
Sito Comune di it.comp.appl.access
http://members.xoom.it/it_db_access
mailto:
it_db_...@usa.net
--------------------------------------
Tutte le richieste che mi arrivano
in privato, vengono cestinate.
--------------------------------------
Rimuovi paperino. per e-mail
--------------------------------------

Se no a cosa serve? Tutti potrebbero aprire la query.
Ovviamente. Pero' nel mio caso il problema e' diverso. Voglio che la query
venga eseguita senza che l'utente debba inserire nulla. Con la tua funzione
mi hai dato un ottimo spunto, ho aggiunto una modifica e mi sembra di aver
raggiunto il mio scopo. Provo a spiegarmi, non e' facile anche perche' e'
tardi e' sono al secondo bicchierino di rum!:-)
La mia situazione e' la seguente:
BE e FE
entrambi MDE
entrambi protetti a livello utente
nel FE query con with owneraccess option
Di norma faccio maschere non associate, con opzioni varie, mi costruisco la
mia query e mostro il risultato in una o piu' sottomaschere. Essendo in un
DB protetto uso una query owner option pero' ho il problema che se il tizio
riesce a visualizzare la finesra del DB si lancia la query per cacchi suoi.
Allora ho usato la tua funzione ma con un'aggiunta:
La password da confrontare non la metto nella tua funzione ma in una
variabile che setto prima di lanciare la query da codice e poi rimetto
immediatamente a null.
In questo modo la query parte e riempe la mia sottomaschera, ma poi non
ripartira piu'!:-)
Beh, no so se sono stato chiaro....magari domani riesco a spiegarmi meglio!
E magari a spiegare pure come faccio cambiare all'utente l'SQL della query
(visto che e' una query dinamica) pur non avendo egli i permessi per
farlo...
A risentirci!:-)
Saluti.
Luciano
(DOC)

 cosi' faccio uno e mezzo, in quanto il mio intero l'ho gia' avuto ;-))
Ma voi usate metodi sleali. Ve lo mando criptato che ne dite?
Sib





