Newsgroup: it.comp.appl.access
Titolo: Assegnare a CurrentUser() una Costante

Ciao a tutti,
ho una domanda da porre riguardo la funzione CurrentUser().
Ho una data base che sfrutta la login degli utenti per filtrare dei
dati, ora vorrei creare un super
utente che vede tutti i dati.
Tutte le maschere sono basate su query che hanno come fitro
CurrentUser().
Avevo pensato di creare un utente che si chiamasse (*) e così avrei
risolto tutti i miei problemi, in
realtà Access non accetta questo carattere.
Avete un'idea da darmi.. come assegnare il carattere Jolly a
CurrentUser().
Ciao e grazie

Cesco ha scritto:

Se ti capisco bene prova con un criterio come:
CurrentUser() o CurrentUser() = "NomeDelTuoSuperUser"
-- 
HTH
Karl
*********
Access-FAQ (tedesco): 
http://www.donkarl.com

 ha scritto nel messaggio
news:4006AD71...@company.com...

Ciao, Cesco.
    *Assegnare* un valore a una *funzione*? Non si puo'. Le funzioni
*restituiscono* valori. Se lo prevedono, si possono passare loro degli
*argomenti*.
-- 
Ciao :o)
Maurizio Borrelli, Microsoft MVP Access
--------
?SPQR(C)
 X
--------

 CurrentUser() o CurrentUser() = "NomeDelTuoSuperUser"
Eh, forse sono già troppo italiano e dev'essere:
CurrentUser() or CurrentUser() = "NomeDelTuoSuperUser"

 ha scritto nel messaggio
news:4006AD71...@company.com...

Prova a crearti una funzione in un modulo cosi :
Public Function currentuser()
    If Application.currentuser() = "Administrator" Then
        currentuser = "*"
    End If
End Function
dovrebbe funzionare.
Facci sapere
bye :o)

 End Function
Ciao, Enrico T.S.
    Non male l'idea dell'incapsulamento...
    Teneteci aggiornati su eventuali problemi.


 Maurizio Borrelli, Microsoft MVP Access
Ciao Maurizio, il principio dell'incapsulamento è più
semplicemente dimostrato dal Post di Karl......!
@Alex.

 semplicemente dimostrato dal Post di Karl......!
    Perdonami ma non ho capito cosa intendi. In pratica, cosi' ho capito io,
Cesco vorrebbe fare in modo di non modificare le query gia' scritte, mentre
la soluzione proposta da Karl prevede che vengano modificati i criteri di
tali query. Sbaglio? Karl, che ne dici?
-- 
Ciao :o)
Maurizio Borrelli, Microsoft MVP Access
--------
?SPQR(C)
 X
--------

 dici?
IMO Cesco deve modificare le query in ogni caso perché
con una stella sola non viene molto. Se usa la funzione di
Enrico deve almeno cambiare il criterio a
Like currentuser()
e non vengono ancora i record che hanno Null nel campo.
La funzione IMO ha 2 altri problemi:
Non fornisce niente se Currentuser <> "Administrator"
e non si puo scrivere currentuser = CurrentUser()
perché i nomi sono uguali. Per questo è necessario
di rinominare la funzione.
-- 
cu


 dici?
IMO Cesco deve modificare le query in ogni caso perché
con una stella sola non viene molto. Se usa la funzione di
Enrico deve almeno cambiare il criterio a: Like currentuser()
e non vengono ancora i record che hanno Null nel campo.
La funzione adesso non fornisce niente se
Currentuser <> "Administrator"
È necessario p.e. come prima righa:
currentuser = Application.currentuser()


realtà Access non accetta questo carattere."
Quindi ho presupposto che abbia già implementato
le sue query con la like.
bye :o)

 wrote in message
news:bu710a$eoq54$
1...@ID-46617.news.uni-berlin.de
[CUT]
Un libro stampato....!
Ormai non hai nulla da invidiare a nessuno, per l'italiano...
@Alex.
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 Eh, forse sono già troppo italiano e dev'essere:
No Karl si dice "debb'essere..."
;-P
La correzione del tu italiano sta diventanto un impiego a tempo pieno...
MAssimiliano

Ciao Ragazzi,
scusate se non ho partecipato in tempo reale alla discussione che ho
creato.
Sono rientrato ora ed ho letto tutte le vostre risposte. Ora provo la
soluzione di Enrico e vi faccio sapere i risultati.
Ciao Cesco


"Enrico T.S." wrote:

Ciao Enrico,
sei mitico... quasi ci siamo io ho messo:
Public Function CurrentUser()
    If Application.CurrentUser = "Cesco" Then
        CurrentUser = "Like *"
    Else
        CurrentUser = Application.CurrentUser()
    End If
End Function
Come potrai vedere CurrentUser = "Like *", non va bene ... dovrei fare
CurrentUser = "Like "*"".
Ma così non si può fare. Le query che ho nel mio progetto vogliono come
filtro Like "*".
Come vedi ci sono delle " di troppo, forse nella sintassi c'è qualche
stratagemma per ignorarne una parte, non so... ricordo per es. che in php
si fa tipo /".
Comunque la funzione che hai fatto è corretta.
Ciao Cesco

"Enrico T.S." wrote:

Niente da fare ho provato anche così:
Public Function CurrentUser()
    If Application.CurrentUser = "Cesco" Then
        CurrentUser = "Like '*'"
    Else
        CurrentUser = Application.CurrentUser()
    End If
End Function
ho verificato se il valore di currentuser() è Like'*' in una maschera di
debug con un campo che mi facesse vedere il valore se era corretto o
meno.... ed è giusto.
Insomma se metto Like '*' in una qualsiasi query funziona e mi fa vedere
tutti i dati, se il valore lo passo con CurrentUser, dopo aver dichiarato
ciò che è sopra scritto NO.
E' un bel dilemma... deve funzionare. Dov'è il mistero?
Ciao Cesco


Non ci siamo mica !!!
Rimetti la funzione come era.
Tu non devi mettere like all'interno della funzione,
ma usare la funzione all'interno della query.
Ovvero nella casella di criterio dove controlli l'utente, metterai
     like chr(34) & CurrentUser & chr(34)
Prova e facci sapere.
bye :o)

 Ormai non hai nulla da invidiare a nessuno, per l'italiano...
Ma MA è molto infame che concerne il mio italiano
e nell'ultima puntata di "La Tassista" a RaiUno ho solo
capito ~75% dei dialoghi. Sempre meglio che qualche
mese fa i 70% con "Un Medico in Famiglia" o i 60%
coi testimoni siciliani di "Commissario Montalbano".
-- 
:-)


"Enrico T.S." wrote:

Devi scusarmi Enrico ma io sono duro di comprendonio... io posso anche
rimettere com'era la funzione:
Public Function CurrentUser()
    If Application.CurrentUser = "Cesco" Then
        CurrentUser = "*"
    Else
        CurrentUser = Application.CurrentUser()
    End If
End Function
ma questo chr(34), che corrisponde alle " lo devo mettere nella query? Se č
cosě non mi va bene.
Il senso di tutto ciň, č evitare di mettere mano alle numerose Query.
Io filtro i dati in base a CurrentUser(), e questo deve rimanere cosě.
Se entro come pippo vedo tutti i dati di pippo
Se entro come pappo vedo quelli di pappo
Se entro, come nel caso specifico della funzione che mi hai passato, come
Cesco... devo vedere tutti i dati sia di pippo che di pappo.
Io uso le stringhe come filtro. Ho provato a mettere la tua funzione anche in
questo modo:
Public Function CurrentUser()
    If Application.CurrentUser = "Cesco" Then
        CurrentUser = "Like '*'"
    Else
        CurrentUser = Application.CurrentUser()
    End If
End Function
Gli apici li accetta e non da problemi, ho anche controllato con un controllo
non associato per verificare che con l'utente Cesco mi restituisca Like'*'...
ed č perfetto.
Se č vero che CurrentUser nel momento in cui mi loggocome Cesco , vale Like'*',
č vero anche che nelle Query del progetto dove c'č CurrentUser() vengono
eseguiti come Like'*'.
Forse sembro un po' contorto... ma io sfrutto il file system.mdw per il login,
ma i dati hanno relazioni in base al nome dell'utente che č messo in una mia
tabella specifica.
In definitiva tutto questo č nato per evitare la modifica delle query.
Ciao Cesco e grazie per le tue preziose risposte.

 ha scritto nel messaggio
news:400809D1...@company.com...


Senti per tagliare corto mi puoi postare la tua query in
formato sql ? cosi ti faccio vedere
come e dove mettere la funzione come io l'ho scritta.
Se tu lasci "Like '*'" e poi usi la funzione, access
lo interpretera' come una stringa unica cioe' come se un utente
si chiami proprio "Like '*'", mentre quello che devi ottenere tu e' solo
che la funzione restituisca l'asterisco da utilizzare con le tue query.
Se pero nelle query non hai inserito la clausola LIKE allora non
puoi utilizzare questo metodo, io l'ho suggerito in quanto lo davo per
scontato.
Cmq ripeto posta una query in sql e vediamo .
bye :o)

 bye :o)
Ora ho capito tutta la solfa, cmq la sql è questa:
SELECT Clienti.Data_Term, Clienti.IDClienti, Clienti.Vuole_off,
Clienti.Non_vuole_niente, Clienti.Nome_C, Clienti.IDEmittenti,
Clienti.Indirizzo_C, Clienti.IDCittà, Clienti.Tel_C, Clienti.Fax_C,
Clienti.Contatto_C, Clienti.IDAgenti, Città.Nome_CT, Città.Provincia, Città.CAP,
Città.IDZone, Clienti.IDCategoria, Clienti.Data_Ins, Clienti.IDEmittenti,
Clienti.Cell, Clienti.e_mail, Clienti.URL, Clienti.Note, Clienti.Cod_Esa,
Clienti.Vuole_news, Clienti.No_Mail, Clienti.Stato_Cli
FROM Agenti INNER JOIN (Città INNER JOIN Clienti ON Città.IDCittà =
Clienti.IDCittà) ON Agenti.IDAgenti = Clienti.IDAgenti
WHERE (((Clienti.Data_Term) Is Null) AND ((Agenti.Nome_A)=CurrentUser()))
ORDER BY Clienti.Nome_C;
Come vedi non ho messo il Like... e mettere like a tutte le query non era la
soluzione che volevo utilizzre.
Immagino non ci sia alternativa.
Chiedo un'ultima cosa poi termino i mie post.
Sarà mai possibile concatenare la stinga '*' preceduta da un Like?.
Ciao Cesco

"Enrico T.S." wrote:

Ho risolto rimboccandomi le maniche e mettendo un Like nelle query prima del
CurrentUser().
Adesso funziona tutto, e mi serve da lezione per le prox volte.
Quindi alla fine di tutto la tua funzione... funziona.
Public Function CurrentUser()
     If Application.CurrentUser = "Cesco" Then
     CurrentUser = "*"
     Else
     CurrentUser = Application.CurrentUser()
     End If
End Function
Ciao a tutti e grazie