datum plaatsen in het juiste format

Status
Niet open voor verdere reacties.

Basbrommer

Gebruiker
Lid geworden
3 mei 2005
Berichten
101
Hallo,

Door middel van een procedure plaats ik data bij records

sub plaatsdatum()
Dim dtehdatum As Date
Dim dteMAdatum As Date
dtehdatum = DMax("datum", "presentie", "dagdid=11")
dteMAdatum = dtehdatum+7
CurrentDb.Execute "UPDATE presentie SET presentie.datum = #" & dteMAdatum & "# WHERE (((presentie.datum) Is Null) And ((presentie.dagdid) = 11))"
end sub
(Met dank aan Guus)

Nu doet de procedure dat keurig maar bij een volgende maand veranderd hij de datum in het format mm-dd-jjjj terwijl de rest in het format staat van dd-mm-jjjj.

Wat moet ik toevoegen aan de bovenstaande procedure zodat alles in het format staat van dd-mm-jjjj?

Groeten Bas
 
Goh zeg, bronvermelding.

Je kan met het format statement een datum eruit laten zien zoals je wilt.
Code:
format(date,"dd/mm/yyyy")
Je moet niet kijken naar de manier waarop het is opgeslagen. Die verschilt namelijk nogal eens afhankelijk van de regional setting op die computer. Als iedereen dd/mm/yyyy gebruikt dan heb je geen probleem. Maar als je daar niet zeker van bent dan zou ik de datum opslaan als long integer. dus clng(date()). je krijgt dan een getal die het aantal dagen sinds 30-12-1899. CDate(1) = 31-12-1899.
Voor de presentatie kan je het format statement gebruiken.

Code:
format(cdate(39406),"dd/mm/yyyy")

Veel plezier!
 
Laatst bewerkt:
Hoi Guus,

Ik kom er niet uit. VBA is voor mij nog te veel "hocus spokus". Ik doe mijn best om er uit te komen maar het lukt mij niet. Sommige dingen dat snap ik en dan weet ik hoe ik het moet toepassen maar dit gaat duidelijk mijn pet te boven. (Je zal je vast afvragen waarom houdt hij zich dan hiermee bezig. Nou om de simpele reden dat ik het leuk vind om iets nieuws te leren en dus hiermee te stoeien en ik kan mijn werk hiermee veel helpen als het lukt) Wil je mij verder helpen? Ik stuur het bestand mee, zonder de probeersels. Mocht je er geen zin in hebben. Ook goed maar kan je mij dan iets meer vertellen hoe ik het dan wel moet doen.

Groeten Bas
 

Bijlagen

Een paar dingen:
Mijn antwoord:
Code:
dteMAdatum = Format(dtehdatum + 7, "dd/mm/yyyy")
Je zou ook je dtehdatum kunnen formatteren:
Code:
dtehdatum= Format(dtehdatum, "dd/mm/yyyy")
de volgende regel wordt dan
Code:
dteMAdatum = dtehdatum + 7
je moet het maar eens proberen.

Ik hoop dat je hiermee verder kan.

Je database is niet goed genormaliseerd. Je creëert een hele berg lege records. In een goed genormaliseerde database komen die niet voor. Ook je code reflecteert dit. Met al die update statements.

Je opbouw zou moeten zijn dat je een form maakt met alle velden. Die worden dan gevuld door je records met gegevens. De velden waarvoor geen records zijn en dus geen gegevens die blijven leeg.

Als je database goed is genormaliseerd dan wordt de code ook overzichtelijker en eenvoudiger uit te breiden. Je hebt een beetje een moeilijk programma gekozen om van te leren.

Succes!
 
Hallo,

Het lukt toch niet zoals ik het wil. Het voorstel van Guus heb ik uitgevoerd maar het werkt niet. Voor de maand waaruit ik start gaat het goed. Maar de eerste datum in de daaropvolgende maand gaat het mis.

Voorbeeld:
29-08-2007
30-08-2007
31-08-2007
09-01-2007
10-01-2007
11-01-2007

De variabele pakt als hoogste datum 31-08-2007. Het format aanpassen naar MM/DD/YYYY heeft geen invoed daarop. Hij blijft optellen vanuit DD/MM/YYYY dus: 31-08-2007, 09-01-2007, 10-01-2007, etc.. Ik werk met een NL versie van access dus de datumnotatie is DD/MM/YYYY.

Hoe kan ik dit oplossen?

Groeten Bas
 
Update statement formatteren

Probeer de datum in het update-statement eens te formatteren. Over het algemeen wordt een datum in sql-statements engelstalig gelezen. Het zou dan zoiets worden als:
CurrentDb.Execute "UPDATE presentie SET presentie.datum = #" & Format(dteMAdatum,"mm-dd-yyyy") & "# WHERE (((presentie.datum) Is Null) And ((presentie.dagdid) = 11))"
 
Heren ik ben er uit gekomen! de procedure ziet er in mijn ogen een beetje vreemd uit maar het werkt wel.
Dit is het geworden:
Public Sub aanvullen()
Dim dtehdatum As Date
Dim dteMAdatum As Date
dtehdatum = Format(DMax("datum", "presentie", "dagdid=11"), "dd/mm/yyyy")
dteMAdatum = Format(dtehdatum + 7, "mm/dd/yyyy")
CurrentDb.Execute "UPDATE presentie SET presentie.datum = #" & Format(dteMAdatum, "dd/mm/yyyy") & "# WHERE (((presentie.datum) Is Null) And (left((presentie.dagdid), 1) = 1))"
End Sub


Bedankt! :thumb:
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan