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