Hoe velden in een qry samenvoegen en lege velden (spatie inbegrepen) weglaten?

Status
Niet open voor verdere reacties.

E Officer

Gebruiker
Lid geworden
24 nov 2010
Berichten
16
Hallo,

Ik wil in een query de (planten)namen van verschillende velden samenvoegen met een expressie.
Daarvoor creëer ik het veld 'Comp Name' met de volgende expressie:

Comp Name: [Tbl Taxon].[Gx] & " " & [Tbl Taxon].[G] & " " & [Tbl Taxon].[Sx] & " " & [Tbl Taxon]. & " " & [Tbl Taxon].[Ss] & " " & [Tbl Taxon].[V] & " " & [Tbl Taxon].[C]

Is er binnen zo'n expressie een eenvoudige manier om niet alleen de velden maar ook de spaties die erbij horen niet te tonen? Een leeg veld wordt sowieso niet getoond maar zoals de expressie hier opgebouwd is zie je telkens de spatie tussen " " staan. Waar de velden niet leeg zijn heb ik die spatie wel nodig...

Sommige namen zou ik ook graag tussen 'aanhalingstekens' plaatsen: dat is bv het geval voor het veld [Tbl Taxon].[C]. Hoe krijg ik dat voor elkaar?

Ik heb geprobeerd met de helpsite van microsoft wat te vinden maar ik kom er zo niet uit...

Thx voor wat hulp.
 

Bijlagen

  • Compound field.jpg
    Compound field.jpg
    99,5 KB · Weergaven: 80
In plaats van het "&"-teken kun je het "+"-teken gebruiken. Als dan een veld leeg is, dan wordt het veld achter het "+"-teken niet weergegeven. Dus in dit geval zet je het "+"-teken voor de spatie. Dus + " " in plaats van & " ".

Om een veld tussen aanhalingstekens te plaatsen kun je het volgende proberen:
"'" & [Tbl Taxon].[C] & "'". Dus een enkel aanhalingsteken tussen een dubbel aanhalingsteken.

Rebmog
 
Als je een dubbel aanhalingsteken wilt gebruiken, kun je daarvoor de ascii code nemen: Chr(34). Of twee dubbele aanhalingstekens achter elkaar.
 
De tip van het plusteken werkt wonderwel!:D Dank je.
De code voor enkele aanhalingstekens die ik graag voor en na een naam zou zien werkt niet.

Ik krijg 'invalid syntax' wanneer ik de enkele aanhalingstekens tussen dubbele plaats :

Comp Name: [Tbl Taxon].[Gx]+ " " & [Tbl Taxon].[G]+ " " & [Tbl Taxon].[Sx]+ " " & [Tbl Taxon].+" " & [Tbl Taxon].[Ss]+ " "'" & [Tbl Taxon].[V]+ "'" " & [Tbl Taxon].[C]

Octafisch, hoe zou jij de code voor een enkel aanhalingsteken Chr(39) in deze expressie plaatsen als je [Tbl Taxon].[V] tussen enkele aanhalingstekens zou willen plaatsen? Ik probeerde tussen dubbele aanhalingstekens maar dat werkte niet.
Zou je het even in 't voorbeeld kunnen plaatsen?

Dankjewel
 
Op deze manier: Expr1: Chr(34) & [afdeling] & Chr(39)
De eerste code is het dubbele aanhalingsteken, de laatste is een enkele.
 
Super Octafish!:)
Dit werkt alweer goed.

Comp Name: [Tbl Taxon].[Gx]+" " & [Tbl Taxon].[G]+" " & [Tbl Taxon].[Sx]+" " & [Tbl Taxon].+" " & [Tbl Taxon].[Ss]+" " & [Tbl Taxon].[V]+" " & Chr(39) & [Tbl Taxon].[C] & Chr(39)

't Resultaat van niet lege velden is:
Abelia x grandiflora 'Fioma Sunrise'
maar wanneer het veld [Tbl Taxon].[C] - dat staat voor Fioma Sunrise - leeg is verschijnen de aanhalingstekens.

Met:
Comp Name: [Tbl Taxon].[Gx]+" " & [Tbl Taxon].[G]+" " & [Tbl Taxon].[Sx]+" " & [Tbl Taxon].+" " & [Tbl Taxon].[Ss]+" " & [Tbl Taxon].[V]+" "+Chr(39) & [Tbl Taxon].[C]+Chr(39)

verschijnen de aanhalingstekens niet als het veld [Tbl Taxon].[C] leeg is maar ontbreekt er een aanhalingsteken voor Fioma Sunrise...:confused:
Abelia x grandiflora Fioma Sunrise'

Ik vind de fout niet. Kan je dit nog even uitklaren? Hartelijk dank dan!
 
Dat komt door je + in de formules vermoed ik. Ik zou op de plek waar het aanhalingsteken moet komen de formule vervangen door een IIF constructie.
Of zo:

Code:
Comp Name: [Tbl Taxon].[Gx]+" " & [Tbl Taxon].[G]+" " & [Tbl Taxon].[Sx]+" " & [Tbl Taxon].[S]+" " & [Tbl Taxon].[Ss]+" " & [Tbl Taxon].[V]+" " &Chr(39) & [Tbl Taxon].[C]+Chr(39)

Je vraag is een beetje vaag uitgelegd; misschien kun je een voorbeeld laten zien van een volledig gevulde string, en één waarbij het fout gaat. Want ik heb nu geen idee waar Fiona vandaan komt.
 
Hierbij een voorbeeld en wat verduidelijking.
Het gaat over een tabel met wetenschappelijke plantennamen en de schrijfwijze van een cultivarnaam tussen aanhalingstekens.

Op de printscreen geeft het veld 'comp name' het resultaat weer voor deze expressie:
Comp Name: [Tbl Taxon].[Gx]+" " & [Tbl Taxon].[G]+" " & [Tbl Taxon].[Sx]+" " & [Tbl Taxon].+" " & [D]+" " & [Tbl Taxon].[Ss]+" " & [Tbl Taxon].[V]+" " & [F]+" "+Chr(39) & [Tbl Taxon].[C]+Chr(39)

Het veld 'Octafisch' geeft het resultaat weer voor de expressie die jij zonet gaf:
Tbl Taxon].[Gx]+" " & [Tbl Taxon].[G]+" " & [Tbl Taxon].[Sx]+" " & [Tbl Taxon].+" " & [Tbl Taxon].[Ss]+" " & [Tbl Taxon].[V]+" " &Chr(39) & [Tbl Taxon].[C]+Chr(39)

Geen van beide haalt het gewenste resultaat voor alle records:
Abelia x grandiflora 'Fioma Sunrise' (een plant met een cultivarnaam 'Fioma Sunrise' genoemd) wordt in jouw versie goed geschreven maar in het volgende record vind ik:
Abelia triflora ' (waar het enkele aanhalingsteken niet mag verschijnen omdat er geen cultivarnaam is)

In mijn versie wordt Abelia x grandiflora Fioma Sunrise' weergegeven met één aanhalingsteken te weinig (voor de naam Fioma).

Hopelijk verduidelijkt dit een beetje het probleem.
 

Bijlagen

  • VoorbeeldString.jpg
    VoorbeeldString.jpg
    99,1 KB · Weergaven: 53
De vraag in dit soort gevallen is natuurlijk: welke quoot laat hij zien, de eerste of de tweede? Kun je dat eens uittesten door één van de quootjes te vervangen door een dubbele quoot?
 
Ik begrijp het misschien niet goed: ik heb de dubbele aanhalingstekens (ascii code) of quotes vervangen:

Comp Name: [Tbl Taxon].[Gx]+" " & [Tbl Taxon].[G]+" " & [Tbl Taxon].[Sx]+" " & [Tbl Taxon].+" " & [D]+" " & [Tbl Taxon].[Ss]+" " & [Tbl Taxon].[V]+" " & [F]+" "+Chr(39) & [Tbl Taxon].[C]+Chr(34)

en krijg dan:
Abelia x grandiflora Fioma Sunrise"

of
Comp Name: [Tbl Taxon].[Gx]+" " & [Tbl Taxon].[G]+" " & [Tbl Taxon].[Sx]+" " & [Tbl Taxon].+" " & [D]+" " & [Tbl Taxon].[Ss]+" " & [Tbl Taxon].[V]+" " & [F]+" "+Chr(34) & [Tbl Taxon].[C]+Chr(39)

en krijg dan:
Abelia x grandiflora Fioma Sunrise'

Met jouw expressie:
Octafisch: [Tbl Taxon].[Gx]+" " & [Tbl Taxon].[G]+" " & [Tbl Taxon].[Sx]+" " & [Tbl Taxon].+" " & [Tbl Taxon].[Ss]+" " & [Tbl Taxon].[V]+" " & Chr(39) & [Tbl Taxon].[C]+Chr(34)

krijg ik:
Abelia x grandiflora 'Fioma Sunrise"

Als ik de aanhalingstekens + "spatie" & verander naar enkele krijg ik een syntax error.
Misschien was het dit niet dat je bedoelde? Sorry dan...:confused:
 
Het gaat eigenlijk om een voorbeeldje van een veld waarbij je één quootje krijgt, terwijl [C] leeg is. Dat de code werkt als het veld niet leeg is, heb je al aangetoond, dus dat hoeven we verder niet te onderzoeken. Door twee verschillende quootjes te gebruiken weet je welke codecombinatie niet goed is.
 
Hoe velden in een qry samenvoegen en lege velden (met haakjes...) weglaten?

Ik was er in geslaagd om het probleem met het al of niet tonen van de velden en de aanhalingstekens die erbij horen op te lossen.

Ondertussen wil ik nog enkele elementen aan die expressie in de Query toevoegen:
twee velden (tussen haakjes met een slash ertussen) wat allemaal al of niet wordt getoond, afhankelijk van het feit of er al of niet informatie in de velden zit. Ook dat lukt, uitgezonderd het laatste (sluitende) haakje.

Ik verklaar met enkele voorbeelden (wetenschappelijke plantennamen):

- haakjes in orde:
Acer opalus subsp. obtusatum (Acer /Monspessulana)
De velden Sectie en Subsectie zijn ingevuld en alle nodige info wordt getoond

- haakjes niet in orde:
Acer davidii subsp. grosseri (Macrantha
Het sluitende haakje ontbreekt: het veld Sectie (Macrantha) is ingevuld, het daaropvolgende veld Subsectie is leeg maar het haakje wordt niet getoond.

Ergens maak ik dus een fout in de codes met '+' of '&' maar ik vind het maar niet.
Is er iemand die dit in een oogopslag ziet en kan verbeteren?

De code ziet er als volgt uit waarbij chr(40) en chr(41) de open en sluitende haakjes zijn:

Comp Name (automatic): [Tbl Taxon].[Gx]+" " & [Tbl Taxon].[Genus]+" " & [Tbl Taxon].[Sx]+" " & [Tbl Taxon].[Species]+" " & [Descript]+" " & [Tbl Taxon].[Subsp]+" " & [Tbl Taxon].[Var]+" " & [F]+" " & Chr(39)+[Tbl Taxon].[Cv]+Chr(39) & " " & Chr(40)+[Tbl Section].[Section]+" " & Chr(47)+[Tbl Subsection].[Subsection]+Chr(41)

Dank je
 
Het sluithaakje heb je altijd nodig, dus dat is niet afhankelijk van het veld Subsection. Dus ik denk dit:

Comp Name (automatic): [Tbl Taxon].[Gx]+" " & [Tbl Taxon].[Genus]+" " & [Tbl Taxon].[Sx]+" " & [Tbl Taxon].[Species]+" " & [Descript]+" " & [Tbl Taxon].[Subsp]+" " & [Tbl Taxon].[Var]+" " & [F]+" " & Chr(39)+[Tbl Taxon].[Cv]+Chr(39) & " " & Chr(40)+[Tbl Section].[Section]+" " & Chr(47)+[Tbl Subsection].[Subsection] & Chr(41)
 
Dank je Octafisch,
Het sluithaakje moet er evenwel niet altijd staan. Wanneer de velden Sectie en Subsectie niet ingevuld zijn, mogen de haakjes niet getoond worden.

Nu krijg ik records met bv
Acer davidii subsp. grosseri 'Leiden' )
Het haakje staat er te veel.

Bestaat er een mogelijkheid om de velden Sectie en Subsectie samen te nemen in één code, bv tussen dubbele haakjes of zo, en op die manier het gebruik van de haakjes beter te kunnen controleren?
 
Dat kan wel. Ik zou dan een geneste IIF maken voor dat stuk.
IIF([Tbl Section].[Section] Is Null;"";IIF([Tbl Section].[SubSection] Is Null;"";'(' & [Tbl Section].[Section] & "/" & [Tbl Section].[SubSection] & ')'))
De code heb ik (logischerwijs) niet uitgetest, maar de structuur klopt wel.
 
Opgelost!

Dit is super! Het werkt helemaal. Ik moet je code wel eens bestuderen om ze te begrijpen. Ken jij soms een of andere goede website waar ik meer kan uit leren?
In elk geval bedankt Octafisch!
 
Wat dacht je van de cursus Access die we bij HelpMij aan het doen zijn? ;)
Vanaf volgende maand gaan we echt bouwen, en programmeren...
 
OK, goed om weten. Ik vond het eerste deel in de nieuwsbrief. Wordt het ook elders vermeld?

Ik heb overigens nog iets te vroeg victorie gekraaid Octafish: de code werkt zodanig dat wanneer ik bv de sectie invul en de subsectie niet, geen van beide wordt getoond. Valt dat aan te passen?

Voorbeeld:
In de databank staat er de volgende plantennamen:
Acer davidii
Deze behoort tot de sectie Macrantha maar er wordt geen subsectie vermeld.
Het resultaat zou dan moeten worden:
Acer davidii (Macrantha)

Acer argutum
Deze behoort tot de sectie Glabra en de subsectie Arguta.
Het resultaat zou dan moeten worden:
Acer argutum (Glabra/Arguta)

Doenbaar?
 
Ik had de formule een beetje gesimplificeerd om hem leesbaarder te houden. Helemaaal volledig zou hij zo moeten zijn:

IIF([Tbl Section].[Section] Is Null;"";IIF([Tbl Section].[SubSection] Is Null;"(" & [Tbl Section].[Section] & ")";"(" & [Tbl Section].[Section] & "/" & [Tbl Section].[SubSection] & ")"))
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan