Heenan, Lambert
Lambert.Heenan at AIG.com
Wed Jul 9 10:37:37 CDT 2003
Here's a function I use all the time in A97. It's a general solution to the
problem that will let you spit any string using any delimiter.
Lambert
Function Field(ByVal strSource As String, strSep As String, intN As Integer)
As Variant
'Purpose:
' Returns the Nth element in a delimited list.
' Input: strSource - the list to search
' strSep - the delimiter of the list - can be more than one
character
' intN - the ordinal value of the element to be returned
'
' Null is returned if either string parameter is null, or intN <=0 or
' If the separator string is not found
'
'Str = Field("Chuck*Roberts","*",1) would return "Chuck".
Dim strResult As String
Dim strSearch As String
Dim I As Long
Dim lSep As Long
Dim lRightChars As Long
lSep = 0: I = 0
If IsNull(strSource) Or strSource = "" Or IsNull(strSep) Or strSep = ""
Or intN <= 0 Then
strResult = ""
Else
strSearch = strSource
While I < intN
lSep = InStr(strSearch, strSep)
If lSep > 0 Then ' we found the delimiter string
I = I + 1 ' count occurance
If I = intN Then ' this is the one we want
strResult = Left$(strSearch, lSep - 1)
End If
' strip off i'th field
strSearch = Right(strSearch, Len(strSearch) - (lSep +
Len(strSep) - 1))
Else ' did not find our separator string, so return the remainer
of the string if the count is ok
If I = intN - 1 Then ' we have seen N-1 separator strings,
so this is the field we want
' at the end of the search
string
I = I + 1 ' to terminate the While loop
strResult = strSearch
Else ' there were less than N-1 fields in the input to
return Null
strResult = ""
I = intN
End If
End If
Wend
End If
If strResult = "" Then
Field = Null
Else
Field = strResult
End If
End Function
> -----Original Message-----
> From: Mark A Matte [SMTP:markamatte at hotmail.com]
> Sent: Wednesday, July 09, 2003 10:58 AM
> To: accessd at databaseadvisors.com
> Subject: [AccessD] Parsing data
>
> Hello All,
>
> In A97 I need to seperate some data into 2 fields...ex:
> "test--data1"
> test2--data"
>
> How do I pull left and right of '--'?
>
> Thanks,
>
> Mark A. Matte
>
> _________________________________________________________________
> MSN 8 with e-mail virus protection service: 2 months FREE*
> http://join.msn.com/?page=features/virus
>
> _______________________________________________
> AccessD mailing list
> AccessD at databaseadvisors.com
> http://databaseadvisors.com/mailman/listinfo/accessd
> Website: http://www.databaseadvisors.com