"We never grow up. We just learn how to act in public" - "Dyslexie is a bitch"
Moet je maar zoeken op vba en username.
Van gewoon vb.net heb ik wel een stukje code, maar ben bang dat dat niet gaat werken.
The best thing about UDP jokes is that I don't care if you get them or not.
Anoniem: 113297
[ Voor 19% gewijzigd door Anoniem: 113297 op 22-09-2005 10:34 ]
1
2
| Private Declare Function apiGetUserName Lib "advapi32.dll" Alias _ "GetUserNameA" (ByVal lpBuffer As String, nSize As Long) As Long 't.b.v. UserName |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
| Function UserName() As String 'NB Vereist onderstaande declaratie bovenin bij de declaraties: 'Private Declare Function apiGetUserName Lib "advapi32.dll" Alias _ "GetUserNameA" (ByVal lpBuffer As String, nSize As Long) As Long Dim lngLen As Long, lngX As Long Dim strUserName As String strUserName = String$(254, 0) lngLen = 255 lngX = apiGetUserName(strUserName, lngLen) If lngX <> 0 Then UserName = Left$(strUserName, lngLen - 1) Else UserName = "" End If End Function |
Dan kun je die aanroepen voor de username. Had het bij de hand vandaar
Dit is dus hetzelfde als wat Vlek poste
[ Voor 9% gewijzigd door TXC op 21-09-2005 14:04 ]
Hoe krijg ik nu die username in dat veld?
"We never grow up. We just learn how to act in public" - "Dyslexie is a bitch"
Anoniem: 113297
Zekers kan dat wel. Als je je functie op moduleniveau hebt gedeclareerd kun je gewoon met =FunctieNaam() de returnwaarde in je tekstveld zetten. Misschien niet bij de defaultwaarde, maar op deze manier werkt het prima.Anoniem: 113297 schreef op woensdag 21 september 2005 @ 16:54:
in de defaultwaarde van de velddefinitie in ontwerpweergave kan je het niet instellen. je zal in een of ander formevent moeten nagaan of het veld leeg is, en zo ja, een van de hierboven vermelde functies aanroepen.
Bij Default Value werkt ook zelfs
[ Voor 13% gewijzigd door TXC op 21-09-2005 16:59 ]
Anoniem: 113297
Juist. Maar de TS wil het doen bij een tekstveld op een formulier volgens mij...Anoniem: 113297 schreef op woensdag 21 september 2005 @ 20:38:
niet in de defaultwaarde van het veld bij de ontwerpweergave van de tabel. zie Why no user-defined functions as default values? (error 3388)
Dat kan namelijk weer wel, ook volgens het door jouw gequote artikel:Ik heb een formulier met een aantal velden en dergelijke.... ....welke vbcode zou er bij de standwaarde van dat tekstveld moeten staan?
TS geeft trouwens niet 100% duidelijk aan of hij het bij de defaultvalue in de tabel of in een formulier wil gaan doen.So you're left with putting your function call with each control that has this field as its ControlSource.
[ Voor 11% gewijzigd door TXC op 22-09-2005 08:59 ]
Anoniem: 113297
in de defaultwaarde van een tekstvak gaat het inderdaad wel zonder problemen, de ts wou het ook daar hebben vermoed ik.TXC schreef op donderdag 22 september 2005 @ 08:47:
[...]
Juist. Maar de TS wil het doen bij een tekstveld op een formulier volgens mij...
[...]
Dat kan namelijk weer wel, ook volgens het door jouw gequote artikel:
[...]
TS geeft trouwens niet 100% duidelijk aan of hij het bij de defaultvalue in de tabel of in een formulier wil gaan doen.
Nu krijg ik helaas #Naam? in dat tekstveld. Iemand een idee?
"We never grow up. We just learn how to act in public" - "Dyslexie is a bitch"
Anoniem: 103004
Ik heb onder module gekozen voor nieuw, en de het volgende erin gezet:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
| '******************** Begin Code ************************** Private Declare Function apiGetUserName Lib "advapi32.dll" Alias _ "GetUserNameA" (ByVal lpBuffer As String, nSize As Long) As Long Function fOSUserName() As String Dim lngLen As Long, lngX As Long Dim strUserName As String strUserName = String$(254, 0) lngLen = 255 lngX = apiGetUserName(strUserName, lngLen) If (lngX > 0) Then fOSUserName = Left$(strUserName, lngLen - 1) Else fOSUserName = vbNullString End If End Function '******************** Code End ************************** |
Heb de module de naam fOSUserName gegeven.
In mijn formulier zet ik bij het veld in standaard waarde =fOSUserName()
Maar het resultaat is niet wat het moet zijn, iemand een tip ?
Werkt het wel als je in het debugscherm een
1
| ? fOSUserName |
The process of preparing programs for a digital computer is especially attractive, not only because it can be economically and scientifically rewarding, but also because it is an aesthetic experience much like composing poetry or music.
"We never grow up. We just learn how to act in public" - "Dyslexie is a bitch"
1
2
3
4
5
6
7
8
9
| Declare Function GetUserName Lib "advapi32.dll" Alias "GetUserNameA" (ByVal lpBuffer As String, nSize As Long) As Long Function UserName() As String Dim lpBuff As String * 25 Dim ret As Long ret = GetUserName(lpBuff, 25) UserName = Left(lpBuff, InStr(lpBuff, Chr(0)) - 1) End Function |
The process of preparing programs for a digital computer is especially attractive, not only because it can be economically and scientifically rewarding, but also because it is an aesthetic experience much like composing poetry or music.
Anoniem: 103004
Heb het nu anders gedaan door de code: =Environ("username") te gebruiken
Dit werkt wel, en krijg ik netjes de gebruikersnaam te zien.
Heel vreemd dat deze code niet werkt, heb het al redelijk vaak in verschillende omgevingen gebruikt. Wat voor OS en Office versie werk je mee?
The process of preparing programs for a digital computer is especially attractive, not only because it can be economically and scientifically rewarding, but also because it is an aesthetic experience much like composing poetry or music.
Deze code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
| '******************** Begin Code ************************** Private Declare Function apiGetUserName Lib "advapi32.dll" Alias _ "GetUserNameA" (ByVal lpBuffer As String, nSize As Long) As Long Function fOSUserName() As String Dim lngLen As Long, lngX As Long Dim strUserName As String strUserName = String$(254, 0) lngLen = 255 lngX = apiGetUserName(strUserName, lngLen) If (lngX > 0) Then fOSUserName = Left$(strUserName, lngLen - 1) Else fOSUserName = vbNullString End If End Function '******************** Code End ************************** |
...werkt prima, zolang de naam van module waarin de code staat NIET "fOSUserName" is. Ik vind het vreemd, maar in mijn Access 2000 is dit het geval.
[ Voor 196% gewijzigd door TXC op 17-01-2006 11:29 ]
The process of preparing programs for a digital computer is especially attractive, not only because it can be economically and scientifically rewarding, but also because it is an aesthetic experience much like composing poetry or music.
Als je een module dezelfde naam geeft als een functie moet je hem (vanuit vba) aanroepen inclusief de modulenaam: =blaat.blaat(). In een textbox krijg ik het onder A2000 niet werkend met gelijkluidende module en functienamen.Anoniem: 103004 schreef op maandag 16 januari 2006 @ 12:00:
[...]
Heb de module de naam fOSUserName gegeven.
In mijn formulier zet ik bij het veld in standaard waarde =fOSUserName()
[...]
in Access moet je sowieso oppassen met dubbele namen. De standaardinstelling van een gelijke naam voor control en onderliggend veld kan voor problemen zorgen bij berekeningen. Als er geen goede reden is om dezelfde naam te gebruiken zal ik het ook niet doen
[ Voor 52% gewijzigd door Lustucru op 17-01-2006 12:27 . Reden: tsskkk, zeg nooit nooit ]
De oever waar we niet zijn noemen wij de overkant / Die wordt dan deze kant zodra we daar zijn aangeland
Dan zal dat zijn probleem inderdaad zijn dan.Anoniem: 103004 schreef op maandag 16 januari 2006 @ 12:00:
Ik heb psies het zelfde krijg ook #Naam?
Ik heb onder module gekozen voor nieuw, en de het volgende erin gezet:
Visual Basic:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 '******************** Begin Code ************************** Private Declare Function apiGetUserName Lib "advapi32.dll" Alias _ "GetUserNameA" (ByVal lpBuffer As String, nSize As Long) As Long Function fOSUserName() As String Dim lngLen As Long, lngX As Long Dim strUserName As String strUserName = String$(254, 0) lngLen = 255 lngX = apiGetUserName(strUserName, lngLen) If (lngX > 0) Then fOSUserName = Left$(strUserName, lngLen - 1) Else fOSUserName = vbNullString End If End Function '******************** Code End **************************
Heb de module de naam fOSUserName gegeven.
In mijn formulier zet ik bij het veld in standaard waarde =fOSUserName()
Maar het resultaat is niet wat het moet zijn, iemand een tip ?
Als ik mijn functie UserName noem (zoals in de eerste code die ik poste met de username functie) en mijn module ook UserName noem en dan =UserName in mijn textveld zet werkt het prima.Boss schreef op dinsdag 17 januari 2006 @ 11:34:
Dat is natuurlijk niet zo heel vreemd, anders heb je dubbele declaraties. Dat zal bij iedere code die je schrijft het geval zijn!

[ Voor 19% gewijzigd door TXC op 17-01-2006 12:11 ]