VBA for Access - TekstString zonder spaties

Status
Niet open voor verdere reacties.

doosje

Gebruiker
Lid geworden
5 mei 2006
Berichten
16
Kan iemand mij verder helpen?

Bij de programmatie van een formulier in Access, zou ik graag een ingevuld gegevens (tekst)
omzetten naar diezelfde tekst, doch zonder eventuele spaties.

Als voorbeeld zal ik de term vluchtnummer gebruiken.
Wanneer iemand bvb de vlucht KL 389 naar Curacao wenst te nemen, kan deze vluchtnummer op diverse wijzen worden ingebracht:
kl389 - kl 389 - KL389 - KL 389

Wanneer men naderhand rapporten opvraagt oogt het natuurlijk mooier dat alle vluchtnummers op eenzelfde manier worden weergegeven.

Het omzetten naar Hoofdletters is poepsimpel
Me.Vluchtnummer = UCase(Me.Vluchtnummer)

Het verwijderen van eventuele spaties vooraan en achteraan is eveneens zo opgelost
Me.Vluchtnummer = UCase(Trim(Me.Vluchtnummer))

Voor de eventuele spaties er tussenin zit ik met een probleempje
Er is geen vaste bepaling van het aantal letters of het aantal cijfers.
Zoniet kon men de Left-functie gebruiken, om de tekst te schijden in 2 delen, welke
men daarna aan elkaar kan plakken zonder spaties.

Ik heb reeds een constante bepaald waaraan dient te worden voldaan:
Const AlfabetNumeriek ="abcdefghijklmnopqrstuvwxyz0123456789"

Het was dus mijn bedoeling een LOOP te laten lopen, welke stopte bij het eerste teken welke niet behoorde tot de constante AlfabetNumeriek; daarna het daaropvolgende teken te verwijderen EN zijn LOOP verder te zetten tot er eventueel nogmaals dient gestopt te worden voor een teken welke niet behoort tot de constante.


Doosje,
 
Hoi (Zwart) doosje (om maar in de vluchttermen te blijven
Code:
strNew = Replace(strData," ","")
'of in jouw geval:
Me.Vluchtnummer = UCase(Replace(Me.Vluchtnummer," ","")))

That's all. Vervang spatie door lege string
 
Laatst bewerkt:
Leuke stad trouwens, Gent. Ik heb daar (en in Drongen) nog wat familie wonen
 
TekstString zonder spaties

Ik zal jouw antwoordje zeker eens uittesten,
maar hiermee is natuurlijk maar een deel opgelost

KL-357 zou ook moeten omgezet worden naar KL357

Dus in principe elk teken dat geen letter of cijfer is.


In ieder geval alvast bedankt en Gent is inderdaad een mooie stad.

En wist je dat de zwarte doos in feite oranje is?



Doosje
 
En wist je dat de zwarte doos in feite oranje is?
Yep dat wist ik - zo is ie makkelijker te vinden bij een crash.

Ik wist niet dat je alle overige tekens wilde filteren, maar dan kun je het zo doen (je was al een eind op weg:

Code:
Public Function CleanString(strInput As String) As String
  Const AlfabetNumeriek = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"

  Dim i As Integer
  Dim strOut As String
  Dim strChar As String

  For i = 1 To Len(strInput)
     strChar = UCase(Mid(strInput, i, 1))
     If InStr(AlfabetNumeriek, strChar) <> 0 Then
        strOut = strOut & strChar
     End If
  Next
  CleanString = strOut
End Function
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan