Jack and Pat
drawbridgej at sympatico.ca
Mon Dec 14 08:37:29 CST 2009
Pedro,
Pedro,
Its early and no one is answering.
Here's a function that will remove all braces/brackets from a string.
Watch for line wrap.
'---------------------------------------------------------------------------
------------
' Procedure : fExtractBraces
' Author : Jack
' Created : 12/14/2009
' Purpose : To remove "(" and ")" from a string
'---------------------------------------------------------------------------
------------
' Last Modified:
'
' Inputs: String that may contain any number of "(" or ")"
' Dependency: N/A
'---------------------------------------------------------------------------
---
'
Function fExtractBraces(strInString As String) As String
Dim lngLen As Long, strOut As String
Dim i As Long, strTmp As String
On Error GoTo fExtractBraces_Error
lngLen = Len(strInString)
strOut = ""
For i = 1 To lngLen
strTmp = Left$(strInString, 1)
strInString = Right$(strInString, lngLen - i)
If (Asc(strTmp) <> 40 And Asc(strTmp) <> 41) Then
strOut = strOut & strTmp
End If
Next i
fExtractBraces = strOut
On Error GoTo 0
Exit Function
fExtractBraces_Error:
MsgBox "Error " & Err.number & " (" & Err.Description & ") in procedure
fExtractBraces"
End Function
Here is a test procedure
Sub Pedro()
Dim x As String
x = "abcd(rst)xyz(abf)"
Debug.Print x
Debug.Print fExtractBraces(x)
End Sub
With result:
abcd(rst)xyz(abf)
abcdrstxyzabf
I've also tried it in SQL query on one of my tables:
Sub Pedro1()
Dim sql As String
Dim x As String
x = "abcd(rst)xyz(abf)"
Debug.Print x
Debug.Print fExtractBraces(x)
'
'test using sql query
Dim db As DAO.Database
Dim rs As DAO.Recordset
Set db = CurrentDb
Set rs = db.OpenRecordset("Select petname,fextractbraces(petname) from pet")
Do While Not rs.EOF
Debug.Print rs!petname & "..." & fExtractBraces(rs!petname)
rs.MoveNext
Loop
'
' Update the petname
Dim UpdateText As String
UpdateText = "Update pet Set petname = fExtractBraces(petname) " _
& " where petname like '*(*' "
db.Execute UpdateText, dbFailOnError
End Sub
With results:
Fluffy...Fluffy
Puffy...Puffy
accde(ew)43wj(d)...accdeew43wjd
Then after executing the Update statement
Pet_Id PetName PetOwner
003 Fluffy O'Keefe
006 Puffy O'Keefe
009 accdeew43wjd Jim
-----Original Message-----
From: accessd-bounces at databaseadvisors.com
[mailto:accessd-bounces at databaseadvisors.com] On Behalf Of Pedro Janssen
Sent: Monday, December 14, 2009 4:33 AM
To: Access Developers discussion and problem solving
Subject: Re: [AccessD] text between ( )
Hello David,
the query, almost does what i want.
SELECT Concl,
Mid([Concl],InStr(1,[Concl],"(")+1,InStr(InStr(1,[Concl],"("),[Concl],")")-2
)
AS Expr1
FROM YourTable
WHERE (((Concl) Like "*(*)*"));
- Only when there are more values with ( ) it only returns the first value
- The value that is returned ( ) also gives part of the rest of the concl
text after the ) but sometimes it is cut off after a certain length and
sometimes not. I Tried to variabel the "compare argument", but no result.
for example (what the expression returns)
Concl expr1
aaa (g2Ta)bbbbcccc g2Ta)bbbbc
aaaaa(g2Ta)cccccccdddddd g2Ta)ccccccccdddd
i don't see the logic of the lengt of the text part after the ) in expr1
How can i solve this?
Pedro
----- Original Message -----
From: "David McAfee" <davidmcafee at gmail.com>
To: "Access Developers discussion and problem solving"
<accessd at databaseadvisors.com>
Sent: Wednesday, December 09, 2009 6:58 PM
Subject: Re: [AccessD] text between ( )
If this looks good:
SELECT Concl,
Mid([Concl],InStr(1,[Concl],"(")+1,InStr(InStr(1,[Concl],"("),[Concl],")")-2
)
AS Expr1
FROM YourTable
WHERE (((Concl) Like "*(*)*"));
you can do it like this:
UPDATE YourTable SET YourTable.fldSelection =
Mid([Concl],InStr(1,[Concl],"(")+1,InStr(InStr(1,[Concl],"("),[Concl],")")-2
)
WHERE (((YourTable.Concl) Like "*(*)*"));
On Wed, Dec 9, 2009 at 8:13 AM, Pedro Janssen <pedro at plex.nl> wrote:
> Dear Group,
>
> is it possible to filter out text between ( ) in a field [Concl] and place
> only the text between ( ) in a new field [fldSelection], with a query.
>
> Thanks
>
> Pedro
> --
> AccessD mailing list
> AccessD at databaseadvisors.com
> http://databaseadvisors.com/mailman/listinfo/accessd
> Website: http://www.databaseadvisors.com
>
--
AccessD mailing list
AccessD at databaseadvisors.com
http://databaseadvisors.com/mailman/listinfo/accessd
Website: http://www.databaseadvisors.com
--
AccessD mailing list
AccessD at databaseadvisors.com
http://databaseadvisors.com/mailman/listinfo/accessd
Website: http://www.databaseadvisors.com
No virus found in this incoming message.
Checked by AVG - www.avg.com
Version: 9.0.716 / Virus Database: 270.14.105/2562 - Release Date: 12/14/09
02:37:00