Access VBA Query中的recordset.GetString在结果后返回一个额外的字符

时间:2016-05-16 18:23:14

标签: sql vba ms-access access-vba

我有一个查询,我通过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

2 个答案:

答案 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'

请记住,如果您希望在行之间放置不同的内容,则只需将零长度字符串更改为所需的字符串即可。