Bij voorvoegsel, eerste letter automatisch hoofd letter

Status
Niet open voor verdere reacties.

fanis01

Gebruiker
Lid geworden
12 feb 2011
Berichten
104
Hallo allemaal
Ik ben bezig met een namenlijst die op verschillende rapporten weergegeven wordt.
Ik wil dat in geval van een voorvoegsel, de eerste letter automatisch met hoofd letter begint. Dus ik vul mijn tabel met klein letters en in mijn Query de voorvoegsel automatisch met hoofdletter begint, maar als er geen voorvoegsel is dat de Query dan ook leeg blijft.

Via google heb ik een functie ingebouwd (Beginletters) en die in de Query opgevoerd maar de Query geeft #Fout aan als ik geen voorvoegsel typ.

In de Query ziet het er zo uit:
Voorvoegsel_hfdletter: Beginletters([Voorvoegsels_kleinletter])

De functie ziet er zo uit:
Function Beginletters(tekst As String) As String
Beginletters = UCase$(Left$(tekst, 1)) & Mid$(tekst, 2)
End Function

De vraag is: Wat ontbreekt van de functie om in geval van geen voorvoegsel de Query leeg te laten? Nu krijg ik #Fout.

Je mag mij het ook mailen naar hmailfa@hotmail.com

Bij voorbaat dank
Fanis
 
Je hebt geen foutcontrole ingebouwd in je functie, dus dan loop je tegen foutmeldingen aan. Dat kan je oplossen in je functie, of in de query. Hier een oplossing waarbij je de functie helemaal niet nodig hebt:

Beginletters = IIF([Voorvoegsels_kleinletter] Is Null;""; UCase(Left([Voorvoegsels_kleinletter], 1)) & Mid([Voorvoegsels_kleinletter], 2))
 
Hallo Octafish
Bedankt voor je antwoord. Ik volg je aanwijzingen en ik plant het in de Query zonder functie maar ik krijg een syntaxis foutmelding

Bij voorbaat dank Fanis
 
Dat kan kloppen; ik ben vergeten om (vanaf UCASE) de komma te vervangen door een puntkomma. Dit is correct:

Beginletters = IIF([Voorvoegsels_kleinletter] Is Null;""; UCase(Left([Voorvoegsels_kleinletter]; 1)) & Mid([Voorvoegsels_kleinletter]; 2))
 
Beste Octafish,
Helaas werkt het weer niet. Nu krijg ik Expired uit mijn Query.
Ik snap niet waarom.

Groeten Fanis
 
Ik heb denk ik de functienaam voorgesteld als veldnaam (Beginletters). Jij gebruikt de veldnaam [Voorvoegsel_hfdletter]. Ik zou die gebruiken, of, veel simpeler: Voorvoegsel.
 
Beste Octafisch
Ik voel me echt "een beetje dom" ala Maxima. Ik doe wat je zegt, ik geef het de naam Voorvoegsel en ik krijg nog steeds Expired.
Ik doe vast iets wat jij niet weet.. Even vanaf het begin. Ik heb nu geen functie in mijn database. Ik zet mijn Query in ontwerp en daarin plant ik:
Voorvoegsel = IIF([Voorvoegsels_kleinletter] Is Null;""; UCase(Left([Voorvoegsels_kleinletter]; 1)) & Mid([Voorvoegsels_kleinletter]; 2))
Ik doe dat en ik krijg gelijk Expired.
Is er misschien een manier om die database naar je toe te sturen?
Groeten Fanis
 
Hallo
Na een nachtje slapen blijkt dat het toch wel werkt. Ik weet niet hoe!!
Maar nu ondanks het IIF([Voorvoegsels_kleinletter] Is Null;""; bij het oproepen van dit veld + [Achternaam] in een andere veld, krijg ik nu bij namen zonder voorvoegsel een ongevraagde spatie. Dit ondanks dat ik de & teken vervangen heb door de + teken.
Raar he?
 
Dan moet ik de string zien die je hebt gemaakt; er zit ongetwijfeld een fout in.
 
Hallo
Hier is die:

Voorletter: IIf([Voorvoegsels_kleinletter] Is Null;"";UCase(Left([Voorvoegsels_kleinletter];1))+Mid([Voorvoegsels_kleinletter];2))

Dat gaat dus goed en zonder errors. Ik roep vervolgens de bovengenoemde string in :

VgslsAchternaamVltrs: ([Voorletter])+" "+[Achternaam] & ", " & [VrlsMetPunten]

En dan krijg ik toch bij mensen zonden voorvoegsel een onnodige spatie.
Groeten Fanis
 
Pas 'm zo aan, en het zou moeten werken.
Code:
Voorletter: IIf([Voorvoegsels_kleinletter] Is Null;"";UCase(Left([Voorvoegsels_kleinletter];1))+Mid([Voorvoegsels_kleinletter];2)& " ")
En dan:
Code:
VgslsAchternaamVltrs: ([Voorletter]) & [Achternaam] & ", " & [VrlsMetPunten]
 
Beste Octafish

Thanks a million.

HET WERKT!!!!

Mag ik je namens al mijn collega's hartelijk bedanken, voor je geduld en de moeite die je erin gestoken heb.
Groeten Fanis
 
Beste Octafish

Nog eens bedankt. Het werkt perfect.
Ik wil je nog 2 vragen stellen.
Vóór dat ik naar de site "Helpmij" ging kijken was ik al enige tijd bezig. Via een andere site had ik al een andere functie gekopieerd voor het plaatsen van punten naast de voorletters. Dat werk nog steeds perfect. Maar nu dat ik je zie zulke wonderen maken met die strings in de QRY's dacht ik, misschien weet je ook wel zo iets voor in de plaats van de puntjes-functie.

Als daar iets voor hebt, dan zou ik ook de al gemaakte functies willen verwijderen, (één functie is nu al overbodig) maar ik lukt me niet om die te verwijderen. Jij weet misschien daar iets op.

Groeten Fanis
 
Oh ja
Hier is de functie:
Function Puntjes(Veld As String) As String
On Error GoTo stoppen
Dim i As Integer
Dim st As String, stNew As String
st = ""
stNew = ""
st = Replace(Veld, ".", "")
st = Replace(st, " ", "")
i = Len(st)
For i = 1 To Len(st)
stNew = stNew & UCase(Mid(st, i, 1)) & "."
Next i
Puntjes = stNew
Exit Function
stoppen:
Puntjes = ""
End Function

Groeten Fanis
 
Riekt een beetje als een functie die ik een tijdje geleden zelf heb gepost ;) Al kun je met zo'n functie ook weer niet zo heel veel kanten op.... Maar helaas, hier is niet zomaar iets op te verzinnen. Wel kun je met het Replace commando punten en spaties verwijderen, maar omdat de lengte van de te corrigeren string wisselend is, valt hier weinig anders voor te verzinnen. Je ziet dat de functie gebruik maakt van een loop, en daar zit dus het probleem. Al moet je dat ook weer niet te somber zien, want het is een redelijk werkende functie. En dat is ook precies het doel van functies: taken uitvoeren die met een gewone oplossing niet kunnen!

En wat was de tweede vraag?
 
Dank je Octafish
Het kan best zijn dat die functie van jou is. Die werk perfect.

Mijn tweede vraag is: Hoe kan ik de eerste functie verwijderen? Immers die is nu overbodig.

Groeten Fanis
 
Gewoon selecteren, en Deleten! Check wel of je hem niet nog ergens hebt aangeroepen. Ga in de naam van de functie staan, <Ctrl>+<F> en zoeken in Huidig project, zodat je ook zoekt in modules en formulieren die je niet open hebt staan. Vind je niks, dan kun je hem verwijderen.
 
Hallo Octafish
Ik heb inmiddels vierkante ogen van om het te verwijderen. Ik roep de functie Voorletters nergens op, maar ik kan daar niets deleten.
Ik kan het verbergen en iets over ""Dokbaar" ik kan het allen niet verwijderen.

Groeten Fanis
 
Ikke nie snappe..... Het is toch gewoon een kwestie van tekst selecteren, en op delete drukken?
 
Hallo Octafish
Ik heb inderdaad de tekst geselecteerd en gedeled maar de module blijft achter en die kan ik niet verwijderen of renamen.
De module is weliswaar leeg maar toch. Sorry dat ik je met zulk soort domme vragen lastig val. Maar ik ben ook lerend bezig. Ik ben tegelijk in het VBA boek gedoken en in zie het nog niet.
Groeten Fanis
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan