Solved

Parse data in access query

Posted on 2013-06-10
4
404 Views
Last Modified: 2013-06-10
I need to parse some data in a field in my query but not sure how to do it. It needs to be parsed into 3 separate columns.

The data is structured like this. It won't always be numeric though. The first 6 digits can be alpha-numeric as well. There is always a space after the first 6 characters.

345666 4001
345666 24001


So I need one column to have "345666", another to have the first digit of the next sequence; "4", and then the final piece would be "001".

The second example would be:

"345666"
"24"
"001"

The first 6 characters will always be 6 characters and the last 3 will always be 3 characters. It's the middle that may change the number of characters from 1 to 3 characters.
0
Comment
Question by:Lawrence Salvucci
[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
  • 2
4 Comments
 
LVL 120

Accepted Solution

by:
Rey Obrero (Capricorn1) earned 500 total points
ID: 39235825
try this query, change F3 with the actual name of field and Mytable with the actual name of the table


SELECT F3, Left([F3],6) AS Expr1, Trim(Mid([F3],7,Len(Mid([f3],7))-3)) AS Expr2, Right([F3],3) AS Expr3
FROM MyTable;
0
 
LVL 48

Expert Comment

by:Dale Fye (Access MVP)
ID: 39235842
I would start out with a function:
Public Function fnParse(ParseWhat as string, Pointer as integer) as variant

    Dim myArray() as string

    myArray = Split(ParseWhat, " ")

    if Pointer - 1 < lbound(myArray) Then
        fnParse = Null
    elseif Pointer -1 > ubound(myArray) Then
        fnParse = Null
    else
        fnParse = myArray(Pointer - 1)
    end if

End Function

Open in new window

Then I would write my query something like:

SELECT fnParse([yourField], 1) as Field1
           , Left(fnparse([yourField], 2), Len(fnparse([yourfield], 2)) - 3) as Fiels2
           , Right(fnParse([yourField], 2), 3) as Field3
FROM yourTable
0
 
LVL 1

Author Closing Comment

by:Lawrence Salvucci
ID: 39235844
Perfect! Thank you for your assistance and quick response!
0
 
LVL 48

Expert Comment

by:Dale Fye (Access MVP)
ID: 39235849
BTW,  I keep fnParse in my library database so I can use it for a wide variety of situations similar to this.
0

Featured Post

Enterprise Mobility and BYOD For Dummies

Like “For Dummies” books, you can read this in whatever order you choose and learn about mobility and BYOD; and how to put a competitive mobile infrastructure in place. Developed for SMBs and large enterprises alike, you will find helpful use cases, planning, and implementation.

Question has a verified solution.

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

This article describes two methods for creating a combo box that can be used to add new items to the row source -- one for simple lookup tables, and one for a more complex row source where the new item needs data for several fields.
Traditionally, the method to display pictures in Access forms and reports is to first download them from URLs to a folder, record the path in a table and then let the form or report pull the pictures from that folder. But why not let Windows retr…
Familiarize people with the process of retrieving data from SQL Server using an Access pass-thru query. Microsoft Access is a very powerful client/server development tool. One of the ways that you can retrieve data from a SQL Server is by using a pa…
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…

724 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