我有一个查询,我通过Access 2010中的VBA执行。查询的结果应该是AFR,但它返回AFR,下面有一个额外的行。我添加了"'"字符使额外的线条可见。
TempHold = rs.GetString
Debug.Print "'" & TempHold & "'"
返回:
'AFR
'
但是应该回复:
'AFR'
我尝试使用下面的代码,但没有一个If语句评估为True。代码应检查" ",vbNewLine或vbCrLf字符,但没有评估为true。有没有人知道会导致换行的任何其他字符?
If Right(TempHold, 1) = " " Then
TempHold = Left(TempHold, Len(TempHold) - 1)
ElseIf Right(TempHold, 2) = vbNewLine Or Right(TempHold, 2) = vbCrLf Then
TempHold = Left(TempHold, Len(TempHold) - 2)
End If
答案 0 :(得分:4)
使用:
Asc(Right(TempHold, 1))
获取Ascii字符代码。
一旦您找到了字符代码(正如您在评论中所写的那样,是13),您可以使用代码将其删除:
If Right(TempHold, 1) = Chr(13) Then
TempHold = Left(TempHold, Len(TempHold) - 1)
End If
在这种情况下,您还可以使用vbCr
,这与Chr(13)
相同。
答案 1 :(得分:0)
在我看来,摆脱回车符的最佳方法是首先停止创建回车符。此方法比必须删除最后一个字符要整齐。
在.GetString
方法中,有一个RowDelimiter
的参数,默认情况下设置为回车。但是,您可以将其更改为所需的内容,包括零长度的字符串,如下所示:
rs.GetString(, , , "")
如果您使用以下代码再次运行调试:
rs.GetString(, , , "")
Debug.Print "'" & TempHold & "'"
您将得到以下结果:
'AFR'
请记住,如果您希望在行之间放置不同的内容,则只需将零长度字符串更改为所需的字符串即可。