Wat hulp met query

peterspie

Gebruiker
Lid geworden
15 nov 2010
Berichten
5
Hallo, ik wil een query maken voor mijn Access database tabel, die alle records laat zien met een leverdatum van volgende maand.
Op de supportsite van Microsoft zie ik het volgende voorbeeld:
SQL:
Year([Verkoopdatum])* 12 + DatePart("m", [Verkoopdatum]) = Year(Date())* 12 + DatePart("m", Date()) + 1

Maar ik krijg deze foutmelding:
Schermafbeelding 2024-01-18 141021.png

Omdat de query rechtstreeks van de supportsite van Microsoft komt, zou ik ervan uit moeten kunnen gaan dat deze regel geen fouten bevat.
Wie kan mij vertellen wat er fout gaat?
Schermafbeelding 2024-01-18 141302.png

Alvast bedankt voor het meedenken.

Groet, Peter
 
Oh ja, uiteraard heb ik in de query Verkoopdatum vervangen door Leverdatum.
Maar het probleem zoals hierboven omschreven blijft.
 
Geen linkje nodig, want heel simpel: in Amerika gebruiken ze de punt als scheidingsteken, in Europa (Nederland) de komma. Zou je dezelfde query met VBA maken, dan gebruik je (om de verwarring compleet te maken) weer wél de punt, want in VBA is alles weer Amerikaans. Overigens een waardeloze formule, want die kan veel korter :). (Niet helemaal waardeloos natuurlijk, want hij zal best werken. Maar het kan makkelijker en korter)
 
Ik denk dat Octafish zich even achter de kieuwen moet krabben, het gaat hier niet om het decimaalscheidingsteken maar om het scheidingsteken tussen formuleparameters. Als je de betreffende query in SQL-weergave bekijkt staan er komma's:
Code:
DatePart("m",Date())
Bekijk je dezelfde query in Ontwerpweergave dan staat er een puntkomma:
Code:
DatePart("m";Date())
De wegen van Microsoft zijn soms ondoorgrondelijk.
 
Zelfde insteek, mijn oren zijn prima. In Amerika een komma, in Europa een puntkomma. Simpel. En ook hier geldt: In VBA weer de Amerikaanse variant. Dat heeft niets met Microsofts ‘ondoorgrondelijke wegen’ te maken. Daar heb ik veel betere voorbeelden voor :). Zeker in Access, waar ik (ik sta alvast naast mijn schoenen) vermoedelijk heel wat meer af weet dan ahhulpje :).
 
mag ik als DBA even gruwelen van een SQL criterium met een functie in het linkerdeel van de vergelijking? Dit moet voor elk record apart berekend worden. Om maar te zwijgen over het feit dat geen enkele index kan gebruikt worden.

je kan het zonder functie op het te testen veld doen:
Code:
WHERE [SalesDate]>DateAdd("m";1;CDate("1-" & Month(Date()) & "-" & Year(Date())))
 
Dan krijg je (als je in SQL weergave tenminste geen puntkomma's gebruikt ;)) alle leveringen na het einde van de huidige maand. Als je alleen de leveringen van de volgende maand wilt hebben zoals TS stelt, dan zou ik er dit van maken:
Code:
WHERE [Leverdatum] > DateAdd("m",1,CDate("1-" & Month(Date()) & "-" & Year(Date())))
AND [Leverdatum] <=DateAdd("m",2,CDate("1-" & Month(Date()) & "-" & Year(Date())))

@OctaFish Ik zou mijn schoenen maar aanhouden met dit weer, voor jet het weet bevriezen je tenen.
 
Verwarring alom....😁
Maar met de puntkomma werkt het.
De komma is in Nederland het decimaal teken (in USA de punt) en de puntkomma het lijstscheidingsteken (en dat is in de USA dan weer de komma). Heel simpel dus :D.
 
Toch maar de makkelijkste formule (in mijn simpele boekje):
Code:
WHERE Format([Leverdatum];"yymm") = Format(DateSerial(Year(Date());Month(Date())+1;1);"yymm")
 
Database technisch gezien (met komma's of puntkomma's, afhankelijk waar je de expressie gebruikt in het query venster of VBA/SQL) is de oplossing van Ahulpje de beste oplossing.
 
Rare opmerking; ik vermoed dat alle (correcte) aangedragen oplossingen hetzelfde resultaat leveren, en ook in dezelfde (meetbare) tijd. Dan ís er dus geen 'beste' oplossing, hooguit een oplossing die je handiger vindt dan een andere. En die van mij is in ieder geval een stuk korter als die van ah. Die bovendien een heel stuk simpeler kan worden gemaakt:
Code:
WHERE [Leverdatum] Between DateSerial(Year(Date()),Month(Date())+1,1) And DateSerial(Year(Date()),Month(Date())+2,1)
Maar goed, het zal nog wel even duren voordat ik gelijk van je ga krijgen dit jaar :).
 
dat valt wel mee, wat Access objecten en VBA betreft ken je veel meer dan ik, chapeau. Wat database technieken betreft, daar weet je precies toch niet veel van.
 
Oh oh, wat een vooringenomenheid proef ik hier. Gelukkig weet ik dat je hier een beetje uit de nek klept. Maar je zal wel gelijk hebben, dus ik gooi mijn diploma’s vanavond maar in de open haard. En dan al die werkgevers die zo tevreden waren… wat een sukkels!
 
Terug
Bovenaan Onderaan