datum v

Status
Niet open voor verdere reacties.

benikke

Gebruiker
Lid geworden
9 apr 2023
Berichten
24
Is het mogelijk om in een query, een getal datum veld (B.V. 10) om te zetten in een tekst datumveld (hier oktober dus)?
zo ja, hoe moet dat dan en bedenk ik ben een leek
Groeten aan allen en alvast bedankt
 
SELECT(MonthName(maandnr))
 
Bedankt voor de reactie maar ik krijg dan:"Deze expressie bevat een subquery waarvan de syntaxis ongeldig is. Controleer de syntaxis en plaats de subquery tussen haakjes." Maar als die SELECT verwijder en Exprxx typ werkt het perfect. (Hou rekening access 2013 zal wel minder mogelijkheden hebben)
Maar nu vraag ik me het volgende af: maak ik geen omweg om mijn doel te bereiken. Ik verklaar me nader. 1 Registratie datum, 2 Maand meer of minder: (Month([Registratie datum])+1), 3 Expr2 maand in tekst: (MonthName([maand])). Kan dat niet rechtstreeks vanuit Registratie datum?
 
Probeer eens zoiets:
Code:
SELECT [Registratie datum],DateAdd("M",1,[Registratie datum] AS DatumPlusMaand,FORMAT(DateAdd("M",1,[Registratie datum]),"MMMM") AS Maandnaam
FROM Tabel;
 
Dit gaf ook weer "Deze expressie bevat een subquery waarvan de syntaxis ongeldig is. Controleer de syntaxis en plaats de subquery tussen haakjes.
 
Plaats je query eens hier.
 
Bedenk dit zijn voor mij enkel testen en als iemand mee kan profiteren dan graag. Maar ik zou niet weten hoe dit te doen. (Leek weet je wel) Hopelijk ben je hier wat mee. Want pak me anders je me best bij het handje (77 jaar (fossiel))
IdRegistratie datum
AAAtesten
[td]
1
[/td]​
[td]
donderdag 3 oktober 2024
[/td]​
[td]
2
[/td]​
[td]
woensdag 2 oktober 2024
[/td]​
[td]
3
[/td]​
[td]
dinsdag 1 oktober 2024
[/td]​
 
Misschien is het makkelijker om een voorbeeld database mee te sturen. Dan zien we ook meteen de context. Je bestand wel eerst even zippen en het zip-bestand meesturen als bijlage. Zie knop onder het venster waarin je een bericht intikt.
 
Je bent nooit te oud om iets te leren!
Hm, daar kan ik niets mee. Plaats hier dan maar een zipje van je database.
Klik in de verkenner met de rechtermuisknop op je (gesloten) database, kies "Comprimeren naar zip-bestand" en voeg het zip-bestand toe via de knop "Voeg bestand toe".
 
Wat wil je precies? Ik zie in je tabel geen numeriek veld waarvan je een datum zou kunnen maken, alleen een datumveld waaruit je verschillende (numerieke) gegevens trekt, zoals jaartal, maand en dag. Da's allemaal behoorlijk standaard, en zo te zien heb je dat dus al onder controle. Dus wat vraag je nu eigenlijk?
 
Is het mogelijk om in een query, een getal datum veld (B.V. 10) om te zetten in een tekst datumveld (hier oktober dus)
Laten we het even over je oorspronkelijke vraag hebben, want die had in één, hooguit twee berichtjes al helemaal beantwoord kunnen zijn, ondanks dat hij niet erg duidelijk is. En we zitten daar nu al ruim boven. En wel hiermee:

Je hebt een functie DateSerial, die je kunt gebruiken om met elk beschikbaar veld of getal) een datum samen te stellen. Dus als je een dag hebt, en daarmee een datum van de actuele maand wil maken, dan doe je dat zo:
Code:
Datum_Nieuw: DateSerial(Year(Date());Month(Date());[Dagveld])
Heb je de maand als basis, dan krijg je zo een datum in die maand:
Code:
Datum_Nieuw: DateSerial(Year(Date());[MaandVeld];Day(Date()))
Etc. Hiermee kun je dus op basis van een getal een nieuwe datum maken. Case Closed!
 
Is het mogelijk om in een query, een getal datum veld (B.V. 10) om te zetten in een tekst datumveld (hier oktober dus)?
Als ik je vraag letterlijk zou nemen, dan wil je dus eerst een getal omzetten naar een datum en vervolgens die datum omzetten naar een tekstveld. (jij noemt het: "tekst datumveld". Dát bestaat dus niet.) Maar dat kan dus met de volgende formule:
Code:
Datum_Nieuw: Format(DateSerial(Year(Date());[Maand];Day(Date()));"mmmm")
Maar dan krijg je dus wat je nu óók al hebt: de uitkomst "Oktober" in de kolom. En dat kan je ook veel simpeler bereiken met
Code:
Datum_Nieuw: MonthName(Month(Date()))
Er is dus niet zoveel reden om daarvoor eerst andere tussenvelden te maken. Bovendien, in jouw database maak je de zaken wel héél erg (en nodeloos) ingewikkeld voor jezelf. Nuum nu deze formule:
Code:
vorig jaar: ((Right([jaar];4))-1)
Die is hetzelfde als dit:
Code:
vorig jaar: [jaar]-1
Of dit:
Code:
Jaar-1: Year([Registratie datum])-1
Kortom: maak het jezelf niet nodeloos ingewikkeld. En als aanvulling op mijn eerste opmerking: zodra je een datim omzet naar een tekst, is het geen datum meer. Wat je ook doet. Sterker nog: je kunt een tekst als 'oktober' niet zomaar omzetten naar een datum! Als je een datum(veld) hebt, en je wilt de naam van de maand in het veld zien, dan is het voldoende om de notatie van dat datumveld in te stellen om Maandweergave. Dan zíe je de naam van de maand, maar het veld blijft nog steeds een datum waarmee je verder kan rekenen. En er is geen formule verder voor nodig.

En verder ben ik uiteraard nog steeds benieuwd naar de reden voor al dit 'gedoe' :).
 
Nu tracht ik alles te begrijpen, maar ik ben niet zo kundig in deze materie. Als ik onduidelijk was, is dat te wijten aan mijn onkunde van acces en sorry naar iedereen die helpen wou. Die 'database' heeft helemaal geen toepassing en de vraag komt gewoon voort uit nieuwsgierigheid. (Nu weet ik niet of ik nu juist bezig ben) maar de vraag is: Is het mogelijk om uit een datumveld ( bv 01oktober2024) een maand in tekstvorm (oktober) te creëren/retourneren (of hoe dat ook genoemd wordt). Of nog liever een maand lager of hoger (dus september of november.) Spijtig is dat al die mensen hun zondag deels verknoeiden aan die 'gedoe.' Waarvoor nog eens sorry
 
Dat is een verwijzing naar bericht nummer 11, maar om het wat makkelijker te maken is hier de betreffende query:
Code:
SELECT [Registratie datum], DateAdd("M",1,[Registratie datum]) AS DatumPlusMaand, FORMAT(DateAdd("M",1,[Registratie datum]),"MMMM") AS Maandnaam
FROM AAAtesten;
 
... maar de vraag is: Is het mogelijk om uit een datumveld ( bv 01oktober2024) een maand in tekstvorm (oktober) te creëren/retourneren.
Ik zou de optie van AH niet gebruiken, en in ieder geval die van mij ook eens bekijken, want die bevat denk ik betere oplossingen voor jou. Alle varianten die ik heb aangegeven, zitten daarin uitgewerkt.

Het antwoord op je vraag is dus: ja, en dat kan, op een aantal manieren. Daarbij heb je dus twee varianten: één waarbij je de onderliggende datum nog steeds kan gebruiken (bijvoorbeeld om een vervolgtermijn te berekenen) en één waarbij de uitkomst tekst is, en je er verder niets mee kunt. KIjk maar eens in mijn voorbeeldje, waarbij de datumvariant rechts is uitgelijnd, ten teken dat er een datum als bron ligt, en de andere varianten waarbij je de datum dus 'omwerkt' naar tekst.
 

Bijlagen

Laatst bewerkt:
@OctaFish
Beste Octafish,
Zou je mij kunnen uitleggen wat er mis is aan mijn oplossing in #2 en #11? Ik meen dat vooral #2 helemaal voldoet aan wat benikke vraagt, maar ik kan het mis hebben natuurlijk.
En dat "één, hooguit twee berichtjes" loopt nu helemaal de spuigaten uit.;)
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan