Access VBA 中的 Right() 函数

Posted

技术标签:

【中文标题】Access VBA 中的 Right() 函数【英文标题】:Right() function in Access VBA 【发布时间】:2018-03-23 18:59:54 【问题描述】:

如果右边的第 8 个字符等于特定值,是否有一个函数会返回某个值?

如果字符串末尾的 8 位有“P”,我希望它返回一个特定的文本字符串。我认为 Right() 函数会起作用,但它显然不只是寻找一个特定的值。

这是我暂时无法正常工作的:

ElseIf Right(rst![DocNo / ERNo / PONo], 8) = "P" Then
sAdditionalText = "<Font face='Calibri'>" _
& "Please work with Purchasing to make the necessary corrections. <BR><BR>" _
& "<b>Please be advised that the funds from this check will remain as a charge against the FOAPALs utilized in the transaction until this matter is resolved.</b> <br><br>" 

【问题讨论】:

【参考方案1】:

Right 返回所有 8 个字符,而不仅仅是第 8 个字符。

您可以通过多种方式解决此问题:

    使用LIKERight 测试特定的第一个字符:

    ElseIf Right(rst![DocNo / ERNo / PONo], 8) LIKE "P*" Then
    

    使用LeftRight 的组合来选择该特定字符:

    ElseIf Left(Right(rst![DocNo / ERNo / PONo], 8),1) = "P" Then
    

    使用StrReverseMid 选择该特定字符:

    ElseIf Mid(StrReverse(rst![DocNo / ERNo / PONo]), 8, 1) = "P" Then
    

    使用MidLen 选择特定字符(少于8 个字符的字符串会出错)

    ElseIf(Mid(rst![DocNo / ERNo / PONo], Len(rst![DocNo / ERNo / PONo])-7, 1) = "P" Then
    

    使用Like 仅用于测试特定位置的字符

    ElseIf rst![DocNo / ERNo / PONo] LIKE "*P???????" Then '7 questionmarks
    

【讨论】:

我想在给定位置匹配字符的选项将比基于 StrReverse / LIKE 的解决方案执行得更好,如果性能很重要的话。

以上是关于Access VBA 中的 Right() 函数的主要内容,如果未能解决你的问题,请参考以下文章

Access VBA中的DMin函数溢出错误

如何从 VBA Access 中的查询中获取记录?

Access VBA 函数为不同的用户产生不同的结果

Access VBA中的DCount

Microsoft Access,计算 - 文本框控件源与 VBA 函数

Microsoft Access VBA 中的记录已删除消息