我一直在使用相同的代码从当前用户获取一段时间的全名,它突然开始表现得很奇怪。 我有一个名为CurrentUser的字符串变量,我用我的函数GetFullNameOfLoggedUser()填充它。 在即时窗口中返回(msgbox也可以正常工作)"姓氏,名字(F)"这是应该的。
当我想将变量赋予另一个名为' sql1'的字符串变量时,它会突然变得奇怪:
CurrentUser = GetFullNameOfLoggedUser()
Dim sql1 As String: sql1 = "UPDATE Tbl_Records SET Tbl_Records.[Added by] = """ & CurrentUser & """ WHERE Tbl_Records.[Added by] IS NULL;"
sql1的值突然变为:
UPDATE Tbl_Records SET Tbl_Records.[Added by] = "Lastname, Firstname (F)? ????? ?????????????????? ??? ?? ?????
是否有人知道所有问号的来源?
免责声明姓氏和名字显然是常规值,为了隐私而省略它们。
额外信息:
要获取完整的网络名称,我使用Dev Ashish的这段优秀代码,它使用了Windows API: http://access.mvps.org/access/api/api0066.htm
该函数已变暗为字符串。我添加了一个""在函数的末尾,以确保值是一个字符串类型:
Function GetFullNameOfLoggedUser(Optional strUserName As String) As String
...
GetFullNameOfLoggedUser = StrFromPtrW(pTmp.EUI_full_name) & ""
End Function
如本地窗口所示,它确实是一个字符串。 (此快照已在功能结束前拍摄,因此变量不会发生进一步的变化。
CurrentUser也已明确定义为字符串变量。 Option Explicit在每个页面上也都有效。
答案 0 :(得分:3)
fGetFullNameOfLoggedUser()
返回的字符串似乎有些奇怪。当我运行代码时
Dim s As String
s = fGetFullNameOfLoggedUser()
Debug.Print Len(s)
Debug.Print s
我得到了
13
GORD THOMPSON
看起来是正确的。但是,如果我将最后Debug.Print
更改为
Debug.Print "|" & s & "|"
我得到了
|GORD THOMPSON?
最后一个字符是问号?
,而不是管道|
。但是,如果我Trim()
字符串
Debug.Print "|" & Trim(s) & "|"
然后我得到
|GORD THOMPSON|