ms-access - 附加到字符串的字符在 VBA 中全部显示为问号

标签 ms-access vba ms-access-2007

我已经使用相同的代码从当前用户获取全名有一段时间了,它突然开始表现得很奇怪。 我有一个名为 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 在每个页面上也处于事件状态。

最佳答案

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|

关于ms-access - 附加到字符串的字符在 VBA 中全部显示为问号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24534224/

相关文章:

SQL 将重复项提取到 Access 中的新表中

excel - 如何修复从 Access 内部关闭 Excel

database - 微软 Access : index optimisation

sql - 在 DateTime 上加入有时会在 Access 和 SQL Server 之间失败

excel - 编译错误-更新数据透视时期望的数组

sql - Access SQL - 在计数查询中显示附加列

c# - 索引超出范围。必须为非负且小于集合错误的大小

excel - 用VBA打开Excel文件进​​行读取而不显示

sql - 这个sql语句有什么问题?

sql - UPPER 和 to_char 函数未定义