ID: Q96458
The information in this article applies to:
Moderate: Requires basic macro, coding, and interoperability skills.
An imported file may contain field values that have a combination of numeric and alphabetic characters. These fields do not sort in proper order if they contain variable numbers of characters. This article describes sample functions that you can use to pad these values with a selected character to produce values of consistent length.
This article assumes that you are familiar with Visual Basic for Applications and with creating Microsoft Access applications using the programming tools provided with Microsoft Access. For more information about Visual Basic for Applications, please refer to your version of the "Building Applications with Microsoft Access" manual.
NOTE: Visual Basic for Applications (used in Microsoft Access 97 and Microsoft Access for Windows 95 version 7.0) is called Access Basic in earlier versions. For more information about Access Basic, please refer to the "Introduction to Programming" manual in Microsoft Access version 1.x or the "Building Applications" manual in version 2.0.
Suppose you have a table that contains Customer ID numbers with values entered as follows:
Customer ID
-----------
123B
1231
1231B2
B123
In a query, these numbers would sort in ascending order as follows:
Unpadded Right Padded Left Padded
-------------------------------------------
1231 123100 001231
1231B2 1231B2 1231B2
123B 123B00 00123B
B123 B12300 00B123
Right padding does not change the sort order; however, it is useful if you
need to make all values a consistent number of characters. Left padding,
however, will allow proper sorting.
To create a left-padding function and a right-padding function, type the following procedure in a new or existing module in your database:
'*********************************************************************
'Declarations section of the module.
'*********************************************************************
Option Explicit
Dim x As Integer
Dim PadLength As Integer
'=====================================================================
'The following function will left pad a string with a specified
'character. It accepts a base string which is to be left padded with
'characters, a character to be used as the pad character, and a
'length which specifies the total length of the padded result.
'=====================================================================
Function Lpad (MyValue$, MyPadCharacter$, MyPaddedLength%)
Padlength = MyPaddedLength - Len(MyValue)
Dim PadString As String
For x = 1 To Padlength
PadString = PadString & MyPadCharacter
Next
Lpad = PadString + MyValue
End Function
'=====================================================================
'The following function will right pad a string with a specified
'character. It accepts a base string which is to be right padded with
'characters, a character to be used as the pad character, and a
'length which specifies the total length of the padded result.
'=====================================================================
Function Rpad (MyValue$, MyPadCharacter$, MyPaddedLength%)
Padlength = MyPaddedLength - Len(MyValue)
Dim PadString As String
For x = 1 To Padlength
PadString = MyPadCharacter & PadString
Next
Rpad = MyValue + PadString
End Function
The following example shows an update query that would modify the Customer
ID field by left padding the field with the 0 (zero) character. It uses the
Lpad() function that you created in step #2.
Update Query: Leftpad Customer Number
-------------------------------------
Field name: Customer ID
Update to: Lpad([Customer ID],"0",6)
Additional query words:
Keywords : kbusage ExrStrg
Version : 1.0 1.1 2.0 7.0 97
Platform : WINDOWS
Hardware : x86
Issue type : kbhowto
Last Reviewed: November 21, 1998