Newsgroup: it.comp.appl.access
Titolo: memorizzazione utente di rete su campo

ho un archivio FE - BE di access xp, il BE su server , mentre il FE su
vari PC della rete,
vorrei inserire in un campo di una tabella dell'archivio , il nome
dell'utente di rete che memorizza il record in quel momento, è possibile?
se si come?
faccio presente che usando currentuser di access, questo funziona solo con
gli utenti memorizzati in access e non quelli della rete, mentre a me
serve il nome dell'utente di RETE.
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

 
Spero possa andare, lurkato non so dove ;-)
'-------------------------------------------------------------------------------------
Public Const MAX_COMPUTERNAME_LENGTH = 255
Public Const ERROR_INVALID_PARAMETER = 87
Public Declare Function GetComputerName Lib "kernel32" Alias _
     "GetComputerNameA" (ByVal lpBuffer As String, nSize As Long) As Long
Public Declare Function SetComputerName Lib "kernel32" Alias _
     "SetComputerNameA" (ByVal lpComputerName As String) As Long
Declare Function GetUserName Lib "advapi32.dll" Alias _
     "GetUserNameA" (ByVal lpBuffer As String, _
     nSize As Long) As Long
Function NomePC() As String
'-------------------------------------------------------------------------------------
'   RITORNA IL NOME DEL PC
'-------------------------------------------------------------------------------------
     Dim lngRet As Long
     Dim lenStr As Long
     NomePC = String(256, 0)
     lenStr = Len(NomePC)
     lngRet = GetComputerName(NomePC, lenStr)
     NomePC = Left(NomePC, lenStr)
End Function
Function NomeUT()
'-------------------------------------------------------------------------------------
'   RITORNA IL NOME UTENTE
'-------------------------------------------------------------------------------------
     Dim szBuffer As String, lBuffSize As Long, RetVal As Boolean
     szBuffer = Space(20)
     lBuffSize = Len(szBuffer)
     RetVal = GetUserName(szBuffer, lBuffSize)
     If RetVal Then
        NomeUT = UCase(Trim(Left(szBuffer, lBuffSize - 1)))
     Else
        NomeUT = Space(20)
     End If
End Function
-- 
Claudio(BS)
per rispondere aggiungi claudio

Claudio(BS) ha scritto:







ho provato sia su invio di una casella di testo non associata che su invio
del controllo campo "utente" ma mi ritorna l'errore in rosso sulle due
righe
  Public Const MAX_COMPUTERNAME_LENGTH = 255
  Public Const ERROR_INVALID_PARAMETER = 87
ora, siccome il codice è molto lungo e non ci capisco niente, domando:
quale è l'errore?
S O S


 S O S
Beh! In effetti andavo un po' di fretta e forse non mi sono spiegato bene.
Tutto quello che ti ho inviato lo devi inserire in un modulo, cioč:
da visualizzazione struttura della finestra che stai creando scegli il 
menu visualizza, la voce codice
da lě scegli il menů inserisci, e la voce modulo
doppio click sul modulo appena aggiunto e incolli il codice che ti ho 
mandato
poi fai doppio click sul nome della finestra del tuo controllo, scegli 
l'oggetto adatto e su un evento che accetta del testo ci metti il nome 
di una delle funzioni, cioč NomeUT o NomePC.
Esempio:
Private Sub Testo0_Click()
Testo0.Text = NomeUT()
End Sub
Se non č chiaro cosě! ;-)


 [CUT]





CCCCLLLLAUDIOOOOO!!!
pfffiuuu!!
dopo molti tentativi andati a vuoto e rileggendo il tuo messaggio
mmmooolte volte, sono riuscito a non fare errori e realizzare quello che
dicevi (pultroppo la mia poca conoscenza di programmazione VBA mi ha fatto
sudare!) Ti ringrazio della tua disponibilitŕ e pazienza, 
ora posso fare un sospiro di sollievo!!!
luigi


 S O S
Prova a memorizzare in un campo il
valore restituito dalla seguente funzione:
 Function NomeComputer_E_NomeUtente() As String
  Dim WSHRete As Object
  Set WSHRete = CreateObject("WScript.Network")
  NomeComputer_E_NomeUtente = WSHRete.ComputerName & " - " & _
                                                    WSHRete.UserName
  Set WSHRete = Nothing
 End Function

 > [CUT]






mettendo in pratica quello che č stato detto finora, noto che alla
creazione di un nuovo record il campo utente non si aggiorna
automaticamente a meno che non selezioni  il controllo sulla maschera, e
questo č un problema dato che il controllo utente lo voglio rendere
invisibile e non accessibile da nessuno. Ho provato sia su aggiornamento,
su clik, su invio, ma mi fa sempre la stessa cosa
c'č qualcosa da aggiustare o che ?
