Tekst tussen haakjes eruit halen

Status
Niet open voor verdere reacties.

Japsur

Gebruiker
Lid geworden
9 apr 2004
Berichten
650
Hallo,

Ik heb een ledenbestand waarin mensen zo in het bestand staan:

A.B.C. (Appie)
D.E. (Derkie)
F. (Frekkie)

Nu is mijn probleem dat ik alleen de tekst tussen de ( ) wil hebben, maar ik kom er niet goed uit omdat mensen nogal verschillende hoeveelheid voorletters hebben.

Heeft iemand een idee hoe ik dit kan oplossen?
Alvast bedankt,:thumb:
 
Function sTekenpositie(sStartzoek As Integer, sString As String) As Integer
' functie zoekt eerste leesteken op in tekst


Dim sZoekteken As Long
sZoekteken = 0
Do While sZoekteken = 0 And sStartzoek <= Len(sString)
sZoekteken = InStr("(", Mid$(sString, sStartzoek, 1))
If sZoekteken > 0 Then
sTekenpositie = sStartzoek
End If
sStartzoek = sStartzoek + 1
Loop

End Function

Probeer eens hiermee te bouwen. Deze functie zoekt het haakje ( (zie bij instr "(" )
Je kan bekijken op welke positie e.e.a. staat. Ga vervolgens te werk met
mid(..... ,sTekenpositie)


Overigens sString is je tekstvak o.i.d.
 
sTekenpositie («sStartzoek»; «sString»)

Dat heb ik nu in mijn query staan.

dus bij <sString> kan ik hier nu het veldnaam invullen waarvan ik het resultaat wil zien, wat moet ik dan bij <sStartzoek> intypen??? Querynaam?

(VBA is niet mijn sterkste kant)
 
beter is in visual basic te zetten,
en dan sString = me.Jouwtekstvak
 
Ja ik heb er een module van gemaakt.
En in een query roep ik die module weer op.

Dan krijg ik deze regel te zien: Expr1: sTekenpositie([«sStartzoek»];[Voornaam])

Ik zag dat wat tekst niet was overgekomen: wat moet ik bij < sStartzoek > invullen?

Het moet allemaal gebeuren in een query. Want met het resultaat hiervan moet ik weer verder knutselen. (dat wat ik wel weet)
 
mmmm even lastig. sStartzoek betekent dat hij kijkt naar het eerst teken in het woord.
door do en loop (+1 bijtelling) kijkt hij naar het volgende teken. Totdat hij bij het haakje ( is aangekomen. Hij laat dan zien middels sTekenpositie op welke plaats deze staat. Vanaf daat doe je mid(.... , sTekenpositie)

en je hebt je naam tussen de haakjes....
In een query weet ik even niet zo uit te leggen...
 
Ja ik weet nie hoe ik dat met VBA moet oplossen, hoe ik dat dan met een query moet oplossen met vba dan ook niet.
 
Zo dan?
Code:
'Function ExtractString
'Arguments:
'StrText        (String), Text to extract subtext from.
'Prefix         (String), Character(Sequence leading the Subtext to Extract.
'Suffix         (String), Character(Sequence Trailing the Subtext to Extract.
'On Error returnd an empty string.
'Author:        B.J.G.Nieuwhof
'Mail:          info@driesign.nl

Public Function ExtractString(StrText As String, Prefix As String, Suffix As String)

Dim LngStart As Long
Dim LngEnd As Long

LngStart = InStr(1, StrText, Prefix)
If LngStart > 0 Then
    LngEnd = InStr(LngStart + 1, StrText, Suffix)
    If LngEnd > LngStart Then
        ExtractString = Mid$(StrText, LngStart + 1, LngEnd - LngStart - 1)
    End If
End If
End Function

Aanroepen in je Query:
VoornaamSchoon: ExtractString([VoorNaam];"(";")")
Het kan zijn dat je de puntkomma's in komma's moet veranderen, afhankelijk van je lokale instellingen.
 
mmmm, dat werkte niet....
In visual basic is het eenvoudiger ivm de loops e.d.
Ik heb even wat bjgevoegd, met de mogelijkheid om maximaal 10 tekens voor het haakje te localiseren. Uiteraard uitbreidbaar. Kijk maar of je er wat aan hebt. (1x foutmelding in de query omdat het 11 tekens zijn, dan kan je het principe zien). Let op de haakjes om de boel te sluiten aan het eind van de regel.
 

Bijlagen

Mensen, dit is het helemaal, ben helemaal blij, zo cool dat het werkt, nu kan ik weer verder. Hartstikke bedankt voor de moeite! Leuk dat ook anderen hier weer iets van geleerd hebben!:) :)
 
Mensen,

bijna het zelfde probleem dient zich aan.
Ik heb nu een import lijst waarin op het eind overal een spatie + komma staat vermeld.
Dit moet weg.
Voorbeeldje: Bedrijf ikhier ,
Uitvoeringsbedrijf Appiehap ,
Moet zijn: Bedrijf ikhier
Uitvoeringsbedrijf Appiehap
Iemand suggesties, misschien een combi van een hier eerder genoemde oplossing, maar ik ben niet thuis in vba.
Bvd.
 
maak een bijwerkquery:
Bij Jouwtekstveld:

Wijzigen in ---> left([jouwtekstveld];len([jouwtekstveld])-2)


uitleg:

len staat voor het aantal tekens bijvoorbeeld 30 totaal
er staan bijvoorbeeld 2 loze tekens, dus minus 2
dus al met al wordt jou tekstveld met 2 ingekort.

je kan de hele tabel in 1 keer doen, of iedere keer alleen de nieuwe.
In dat laatste geval zet je bij criteria right([Jouwtekstveld];1)=","

waarom?
anders gaat hij iedere keer jouw bijgewerkte nogmaals inkorten, en dat is niet de bedoeling.

succes
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan