Syntaxis ongeldig bij query Format-functie in SQL-database benaderd door Access

Status
Niet open voor verdere reacties.

late1983

Nieuwe gebruiker
Lid geworden
2 mei 2014
Berichten
3
Beste mensen,

Ik wil een Access-query uitvoeren waarbij een veld met datum/tijd notaties door middel van de Format-functie alleen de maand weergeeft.

Bij het uitvoeren van de functie Format([CreatedOn], "mm") als veldnaam in een Access Query met een ODBC koppeling naar een Dynamics CRM 2011 SQL-database verschijnt echter de melding "De syntaxis van de expressie die u hebt opgegeven is ongeldig. Er ontbreekt een operant of operator, u hebt een ongeldig teken of ongeldige komma opgegeven of u hebt de tekst in de expressie niet tussen aanhalingstekens geplaatst. "

Als ik de waarde in Veld verander naar Format([CreatedOn]; "mm") waarbij een puntkomma geplaatst is in plaats van een komma verschijnt er een andere foutmelding bij het uitvoeren van de query, namelijk "Syntaxisfout: In query-expressie dbo_new_bezoek.[Format([CreatedOn];"mm")]."

Volgens de informatie op de Microsoft Office website (zie http://office.microsoft.com/nl-nl/access-help/format-functie-HA001228839.aspx) gebruik ik de functie bij het eerste voorbeeld zoals het hoort

De waarde van het veld CreatedOn is bijvoorbeeld "20-3-2014 13:24:00".

Ik loop vast en heb al vele posts zowel nederlands- als engelstalig doorgelezen op internet maar het probleem is nog niet opgelost. Hebben jullie nog ideeën?
Eventueel bedankt voor jullie hulp dan!
 
Om te beginnen: als je de maand uit een datumveld wilt, kun je veel beter de (daarvoor speciaal gemaakte) functie Month gebruiken. Month([CreatedOn]) is nog korter ook :). De uitkomst is namelijk een getal, en bij Format is de uitkomst altijd tekst. En dat is ook voor je sortering vervelend want je wilt niet sorteren op 1,11,12,2,3 etc, maar op 1,2,3,...9,10,11,12. Dus dat is één ding. Verder zou, gezien de inhoud van je veld, dat niet als datumveld gezien kunnen worden door Access, maar als tekst. En dan kun je sowieso met geen enkele functie de maand eruit vissen. Of dat zo is kun je simpel controleren door te kijken naar de uitlijning van je veld. Rechts uitgelijnd = getal = datum, links uitgelijnd = tekst. In dat getal moet je het veld met CDate terugconverteren naar datum. Dan kun je weer op jacht naar de maand. Mijn oplossing zou dus zijn: Month(CDate([CreatedOn])).
 
Bedankt voor je reactie maar sorry, het gebruik van een andere functie had ik ook al geprobeerd, Month() is daar een voorbeeld van. Dit werkt echter ook niet. De foutmelding die ik krijg is ") te veel in query-expressie dbo_new_bezoek.[Month([CreatedOn])]." De posts hierover op internet heb ik ook doorgelezen en ik ben daarmee niet verder gekomen. Ook invullen van "Month(CDate([CreatedOn]))" werkt niet, deze waarde geeft dezelfde foutmelding als Month([CreatedOn])

Ook heb ik geprobeerd de haken weg te halen dus in Veld in te vullen "Month(CreatedOn)". Access voegt dan zelf echter de haken toe.

Nog meer ideeën? Bij voorbaat dank!
 
Laatst bewerkt:
De expressie dbo_new_bezoek.[Month([CreatedOn])] is ook behoorlijk fout, dus daar zou ik ook een foutmelding op genereren :). Dat zou op zijn minst moeten zijn:
Code:
Maand:Month([dbo_new_bezoek].[CreatedOn])
Maar als je daar een foutmelding op krijgt, dan komt dat dus waarschijnlijk doordat het veld als tekst wordt behandeld, niet als datum.
 
Perfect! Dankjewel voor je hulp, het is nu opgelost. Ik ga me nog verder in Access verdiepen denk ik ;)
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan