Want to win a PS4? Go Premium and enter to win our High-Tech Treats giveaway. Enter to Win

x
?
Solved

Cleaning up Special Characters - Access

Posted on 2011-09-13
3
Medium Priority
?
333 Views
Last Modified: 2012-05-12
I'm importing phone numbers from a web source into Access.  Can someone help me to strip out the special characters and spaces and then format as:

(###)###-####

Thanks
0
Comment
Question by:OnsiteSupport
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
3 Comments
 
LVL 120

Expert Comment

by:Rey Obrero (Capricorn1)
ID: 36529942
place this function in a regular module

function cleanField(strPhone) as string
dim vChar as string, j as integer
vChar="0123456789"

if strPhone & ""="" then cleanfield="" :exit function

for j=1 to len(strPhone)
      if instr(vChar,mid(strPhone,j,1)) then
          cleanfield=cleanfield & mid(strPhone,j,1)
     end if

next

end function


to use in a query

update tableName
set [Phone]= fromat(cleanfield([Phone]),"(###)###-####")
where [Phone]<> null




post back for result
0
 
LVL 42

Accepted Solution

by:
dqmq earned 2000 total points
ID: 36530138
Personally, I would store a 10-digit string without formatting and restrict it to acceptable digits. You may even need a longer string if you accept international numbers.  When collecting numbers, it's easy to validate a 10-digit number. (or a 3-digit area code and a 7-digit number).  It's very easy to apply the formatting to forms and reports if you are starting with proper numbers in your data.  It's also very important to validate inputs as close to the source as possible and avoid cleansing efforts like this, which are at best "fuzzy".


I would create a public function and then use it in VBA or in an update query as follows:

Update yourtable
  set phone = phonecleanup(phone)


Cannot give you too many specifics for the function as it depends so much on the diversity and patterns found in your phone number inputs. However, here is a simplistic function that should give you the idea.


Puplic Function PhoneCleanup(Phone as String) as String
Dim I As Integer
'remove all but digits
For I = 1 To Len(phone)
  If Not IsNumeric(Mid(phone, I, 1)) Then Mid(phone, I, 1) = "X"
Next
phone = Replace(phone, "X", "")
'truncate to 10 digits
phone = Left(phone, 10)
'extend to 10 digits
phone = Right(Space(10) & phone, 10)
End Sub



0
 

Author Closing Comment

by:OnsiteSupport
ID: 36530257
Thank you.  Unfortunately, I have no control over the code that's generating the inputs. (Need an application that zaps the people who are sending me the data) :)
0

Featured Post

Concerto's Cloud Advisory Services

Want to avoid the missteps to gaining all the benefits of the cloud? Learn more about the different assessment options from our Cloud Advisory team.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Did you know that more than 4 billion data records have been recorded as lost or stolen since 2013? It was a staggering number brought to our attention during last week’s ManageEngine webinar, where attendees received a comprehensive look at the ma…
This article shows how to get a list of available printers for display in a drop-down list, and then to use the selected printer to print an Access report or a Word document filled with Access data, using different syntax as needed for working with …
Learn how to number pages in an Access report over each group. Activate two pass printing by referencing the pages property: Add code to the Page Footers OnFormat event to capture the pages as there occur for each group. Use the pages property to …
In Microsoft Access, learn how to “cascade” or have the displayed data of one combo control depend upon what’s entered in another. Base the dependent combo on a query for its row source: Add a reference to the first combo on the form as criteria i…

636 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question