ACC2: How to Parse Titles Beginning with "A," "An," or "The"ID: Q175390
|
Moderate: Requires basic macro, coding, and interoperability skills.
Titles often begin with the article "A," "An," or "The." When you sort such
title fields, you may not get the desired result of having the titles
sorted in alphabetical order by their most meaningful words. For example,
movie titles, such as "The Bronx," appear in the t's rather than the b's.
To sort titles by a word other than "A," "An," or "The," use the function
provided in this article in a query to build a field that will either
remove the article completely or move it to the end.
This article assumes that you are familiar with Access Basic and with
creating Microsoft Access applications using the programming tools provided
with Microsoft Access. For more information about Access Basic, please
refer to the "Building Applications" manual.
NOTE: In the following sample code, an underscore (_) at the end of a
line is used as a line-continuation character. Remove the underscore from
the end of the line when re-creating this code in Access Basic.
Function ParseArticle(strOldTitle As String, varKeepArticle _
As Variant) As String
' strOldTitle is the field or value you want to parse.
' varKeepArticle is a variant value that, when False, completely
' removes the article (for example, "The Beatles" becomes "Beatles").
' If varKeepArticle is True, the function places the article at the
' end of the string returned by the function (for example,
' "The Beatles" becomes "Beatles, The").
On Error GoTo Err_Result
Dim intLength As Integer, strArticle As String
intLength = Len(strOldTitle)
strArticle = ""
' Check Value for preceding article (a, an, or the).
If Left(strOldTitle, 2) = "a " Then
strArticle = ", " & Left(strOldTitle, 1)
strOldTitle = Right(strOldTitle, intLength - 2)
ElseIf Left(strOldTitle, 3) = "an " Then
strArticle = ", " & Left(strOldTitle, 2)
strOldTitle = Right(strOldTitle, intLength - 3)
ElseIf Left(strOldTitle, 4) = "the " Then
strArticle = ", " & Left(strOldTitle, 3)
strOldTitle = Right(strOldTitle, intLength - 4)
End If
If varKeepArticle Then
ParseArticle = strOldTitle & strArticle
Else
ParseArticle = strOldTitle
End If
Exit Function
Err_Result:
ParseArticle = "#Error"
End Function
For more information about parsing strings, please see the following
article in the Microsoft Knowledge Base:
Q115915 ACC: Sample Expressions to Extract Portion of Text String
For information on how to parse titles beginning with "A," "An," or "The"
in Microsoft Access versions 7.0 and 97, please see the following article
in the Microsoft Knowledge Base:
Q154600 ACC: Parsing Titles Beginning with "A," "An," or "The"
(95/97)
Additional query words: remove ignore parse
Keywords : kbusage GnlFrmt
Version : WINDOWS:2.0
Platform : WINDOWS
Issue type : kbhowto
Last Reviewed: April 29, 1999