syntax fout in query

Status
Niet open voor verdere reacties.

tartuffe2

Gebruiker
Lid geworden
30 nov 2016
Berichten
56
Hallo

ik tik dit in in design mode van een query: Expr1: DCount("[ritnummer]";"ritten";"left(vertrekpunt;1) = 'B'")

Alle veldnamen en tabelnamen kloppen. Toch krijg ik de fout: "syntax fout bij expressie left(vertrekpunt;1) = 'B'")
Ik wil gewoon het aantal ritten optellen maar alleen als het vertrekpunt begint met een 'B'.
Dat zal een detail zijn, maar ik zie het niet. Enig idee?
Bedankt
Tartf
 
De functie Left staat tussen aanhalingstekens waardoor het niet als een functie wordt gezien maar als een gewoon stukje tekst.
 
Gebruik nooit enkele quoots; dat gaat je ooit een keer opbreken. De functie is wat ingewikkelder dan edmoor denkt, maar die is dan ook geen Access kenner :). De quootjes horen er namelijk wél te staan.
Code:
Expr1: DCount("[ritnummer]";"Ritten";"Left([vertrekpunt], 1) = ""B""")
 
Klopt. En een functie tussen quotes is voor mij inderdaad nieuw :)
 
Geen dingen zeggen die je niet weet, heeft mijn grootmoeder mij geleerd. Is een verstandige les :). En al helemaal niet de suggestie wekken dat je dan nog gelijk hebt ook :D.
 
Ik had al gezegd dat je gelijkt hebt in deze, maar ik wil het best nog een keer herhalen hoor.
 
Daar gaat het niet om; je leidt TS op een verkeerd spoor. Zou je niet moeten doen, als je niet weet hoe het zit. Er zijn genoeg Access helpers die wél kunnen helpen met zo'n vraag.
 
Single quoots mág wel, en is technisch niet fout, maar het is niet 100% bedrijfszeker als je filtert op tekstvelden. In het Engels kom je de constructie niet zo vaak tegen, maar in het Nederlands wel. In een tekstveld kan een enkele quoot voorkomen ('s Hertogenbosch, 's Gravenhage om maar wat te noemen) en dan gaat je filter de teil in. Door te filteren met dubbele quoots voorkom je die ellende. Ik heb mezelf aangeleerd om nooit te filteren met een enkele quoot. Waarom zou je werken met een systeem dat niet 100% nauwkeurig is, als er een methode is die dat wél is?
 
Je fout zit in de puntkomma... bij die laatste moet het een komma zijn.

DCount("[ritnummer]";"ritten";"left([vertrekpunt],1) = 'B'")

Och ja... en zoals Octafish opmerkte ook de B tussen dubbele aanhalingstekens zetten. Ik had het als test nu even vergeten.
 
Laatst bewerkt:
@TS: de juiste syntax stond er al in bericht #3. Je moet de code uiteraard wél correct overnemen :). De reden dat er zoveel dubbele quoots staan is overigens logisch: het " teken is het markeringsteken voor een string. Daarmee geef je dus het begin en het eind van een string aan. Als je het " teken dus onderdeel wilt laten zijn van de string, moet je het teken twee keer typen zodat Access weet dat het tweede "-teken letterlijk in de string zit. "Left([vertrekpunt];1)=""B""" Het criterium bestaat uit een formule met een uitkomst , dus dat staat in zijn geheel tussen dubbele quoots (de blauwe quootes). Dan de 'herhaaltekens' die dus vóór het echte teken staan in groen, en het uiteindelijk gebruikte teken in rood. Als je de logica snapt, is het verder makkelijk aan te leren. Zodra je een enkele quoot wilt typen, typ je twee dubbele quoots. Zo simpel is het :).
 
Bedankt allen voor de uitleg. Met dit Expr1: DCount("[ritnummer]";"ritten";"Left([vertrekpunt],1)=""B""") lukt het.


Dan heb ik en andere vraag. Ik deed dit: a: Left([adres],1) en kreeg "de syntax is ongeldig. U hebt een ongeldige komma enz ..."

terwijl dit: a: Left([adres];1) perfect werkt.

Hoe komt dat? Waarom een ',' in de bovenste formule en een ';' in de andere?
 
Lijkt misschien wat raar... en dat is het eigenlijk ook.
Maar in je voorbeeld is die Left een onderdeel van een andere functie.
Om alles kort samen te vatten: de problemen ontstaan (net zoals bij datums) dat Amerika een andere notatie gebruikt. De komma in een getal is in Amerika een punt. De dag in een datum is in Amerika een maand. En deze details trekken dan weer andere problemen aan, zoals in een query waar men in Amerika een komma gebruikt tussen de verschillende argumenten van een functie... dat kan dan in Europa weer niet, want daar heeft die komma al een functie, dus veranderen ze dat in een puntkomma. Beetje moeilijke uitleg, tenzij je je er in gaat verdiepen, en dan wordt alles duidelijk.

In Amerika zullen ze dat probleem totaal niet hebben, en valt die knoeiboel dus ook niet op.
 
In de DCount is de LEFT functie een deel van het criterium. DCount is een VBA functie die je kan gebruiken in een query, dus je gebruikt eigenlijk VBA in de query. Vandaar dat je in de parameters Amerikaanse notatie moet gebruiken.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan