get network login name

X

xbound

I have the following code to get the network login name:

Private Declare Function apiGetUserName Lib "advapi32.dll" Alias _
"GetUserNameA" (ByVal lpBuffer As String, nSize As Long) As Long

Function fOSUserName() As String
' Returns the network login name
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


This code is available widely from the internet and I've been using it in a
couple of my Access projects with no problem. Then lately I created a new
Access project and import the form containing that piece of code straight
from one of the old projects. However; as soon as that function is
entered, I would get an error : "Compile error. Type declaration does not
match declared data type." such that I couldn't examine the values of
variables there. It seems the statement "fOSUserName = Left$(strUserName,
lngLen - 1)" is causing trouble. If I comment out that statement, I don't
get any error but of course I won't get the network login name either. As
a precaution I stepped through the function in the old project and found
that everything is working as expected.

The old adp projects were created in Access 2003 on a XP workstation. The
new project was created in Access 2007 on a Win 7 workstation. Since the
old projects are functioning perfectly on the Win 7 machine, I gather that
the Access version and the OS platform are not the issues. This only
makes the problem more baffling to me. Maybe someone could spot or have
an idea what I've missed?

thanks.
 
M

Mark Andrews

I just copied your code into a new database in Access 2007 sp2 on my Windows
7 laptop and it worked fine.

HTH,
Mark
 
G

Gina Whipp

Was that Windows 7 64 bit or 32 bit? And are either of you running in
Compatibly Mode?

I just copied your code into a new database in Access 2007 sp2 on my Windows
7 laptop and it worked fine.

HTH,
Mark
 
M

Mark Andrews

Mine is 64bit. Not in compatibility mode. However I'm not the one with the
issue.
Mark
 
G

Gina Whipp

Mark,

Hopefully, the OP will post back. I found I had to run my Access 2003 in
compatiblity mode, aslo 64 bit but my Access 2007 is fine as long as in a
Trusted Location. But all we can do is wait and see...
--
Gina Whipp
2010 Microsoft MVP (Access)

"I feel I have been denied critical, need to know, information!" - Tremors
II

http://www.regina-whipp.com/index_files/TipList.htm

Mine is 64bit. Not in compatibility mode. However I'm not the one with the
issue.
Mark
 
X

xbound

Thanks for all the responses. Mine is 32 bit. After installing SP2, the
compilation error goes away. When I use Access 2007 to open my projects ,
whether old or new, it will say it's in "Access 2000 File Format". So far
everything is fine until this problem comes up. Things like that took a
long time to troubleshoot.....
 
X

xbound

I've posted back last week but for some reason it's not showing up.

Thanks for all the responses. After applying SP2, the compile error went
away. Things like this is really hard to troubleshoot ......
 
G

Gina Whipp

Glad to hear all is well!

--
Gina Whipp
2010 Microsoft MVP (Access)

"I feel I have been denied critical, need to know, information!" - Tremors
II

http://www.regina-whipp.com/index_files/TipList.htm

I've posted back last week but for some reason it's not showing up.

Thanks for all the responses. After applying SP2, the compile error went
away. Things like this is really hard to troubleshoot ......
 
X

xbound

Yes it is. Even if it is not, I don't think one would get "Compile Error"

Right now, the Compile Error pops up at the moment when Stepping Into the
line "Function fOSUserName() As String"; while at the same time the
debugger would highlight "LEFT$" several lines down. Then can't go on
anymore.
 
J

John W. Vinson

Yes it is. Even if it is not, I don't think one would get "Compile Error"

Right now, the Compile Error pops up at the moment when Stepping Into the
line "Function fOSUserName() As String"; while at the same time the
debugger would highlight "LEFT$" several lines down. Then can't go on
anymore.

This appears to be the very common References bug. Open any
module in design view, or open the VBA editor by typing
Ctrl-G. Select Tools... References from the menu. One of the
..DLL files required by Access will probably be marked
MISSING. Uncheck it, recheck it, close and open Access.

If none are MISSING, check any reference; close and open
Access; then uncheck it again. This will force Access to
relink the libraries.
 
G

Gina Whipp

Silly me.. John is correct it is a Reference issue...

--
Gina Whipp
2010 Microsoft MVP (Access)

"I feel I have been denied critical, need to know, information!" - Tremors
II

http://www.regina-whipp.com/index_files/TipList.htm

Yes it is. Even if it is not, I don't think one would get "Compile Error"

Right now, the Compile Error pops up at the moment when Stepping Into the
line "Function fOSUserName() As String"; while at the same time the
debugger would highlight "LEFT$" several lines down. Then can't go on
anymore.
 
D

De Jager

xbound said:
I have the following code to get the network login name:

Private Declare Function apiGetUserName Lib "advapi32.dll" Alias _
"GetUserNameA" (ByVal lpBuffer As String, nSize As Long) As Long

Function fOSUserName() As String
' Returns the network login name
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


This code is available widely from the internet and I've been using it in
a couple of my Access projects with no problem. Then lately I created a
new Access project and import the form containing that piece of code
straight from one of the old projects. However; as soon as that function
is entered, I would get an error : "Compile error. Type declaration does
not match declared data type." such that I couldn't examine the values
of variables there. It seems the statement "fOSUserName =
Left$(strUserName, lngLen - 1)" is causing trouble. If I comment out that
statement, I don't get any error but of course I won't get the network
login name either. As a precaution I stepped through the function in
the old project and found that everything is working as expected.

The old adp projects were created in Access 2003 on a XP workstation.
The new project was created in Access 2007 on a Win 7 workstation. Since
the old projects are functioning perfectly on the Win 7 machine, I gather
that the Access version and the OS platform are not the issues. This
only makes the problem more baffling to me. Maybe someone could spot or
have an idea what I've missed?

thanks.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top