Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien
Toon posts:

[Access VBA] datums optellen met getallen

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik heb in mijn form een textbox staan met daarin een input mask; zodat enkele data in de vorm van 22/02/2000 gegeven kan worden

Nu zou ik willen hebben dat in een tweede textbox deze datum met 12 of 36 maanden opgeteld wordt.
De gegevens staan in een tabel.
Dit heb ik als code gevonden
Private Sub Knop0_Click()
Sum = Month(Date) + 12
MsgBox "The answer is " & Sum
End Sub
Maar hier telt hij enkel 12 plus de maand op van de huidige datum en krijg ik als antwoord 19

Een grote hulp zou zijn wanneer ik ook weet hoe je die extra aantal maanden haalt uit de kolom van een tabel.
i.e.

Tabel1
12 naam1
36 naam2

In het form is er een combo box waaruit je naam1 en naam2 kiest en dan vult men zelf een datum in de textbox1 en moet er dan afhankelijk van naam1 of naam2 in een andere textbox2 de datumverschijnen plus 12 of 36 maanden

  • F_J_K
  • Registratie: Juni 2001
  • Niet online

F_J_K

Moderator CSA/PB

Front verplichte underscores

Dit heb ik als code gevonden
Je wilt dit soort code dan ook vooral niet zoeken, maar zelf bedenken - of hooguit de functies zoeken en dan kijken welke parameters die dingen hebben.

Maar wat lukt er niet?
Visual Basic:
1
2
3
4
5
6
7
Sub foo()

 vandaag = Date
 Debug.Print vandaag
 Debug.Print vandaag + 1

End Sub

Levert keurig een dag later op. Als je het per maand wilt, kan je de datum opsplitsen, na omzetting naar een string met CStr(). Dan natuurlijk wel rekening houden met aantallen dagen per maand, schrikkeljaren,etc. Maar dat is simpelweg even uitschrijven van wat logica.

Edit: dan voor de een-na-laatste stap: Debug.Print Left(CStr(vandaag + 1), 2) en
Visual Basic:
1
2
straks = CDate("01-02-2009")
Debug.Print straks + 1

[ Voor 11% gewijzigd door F_J_K op 16-07-2008 08:13 . Reden: op -> om ]

'Multiple exclamation marks,' he went on, shaking his head, 'are a sure sign of a diseased mind' (Terry Pratchett, Eric)


  • Lustucru
  • Registratie: Januari 2004
  • Niet online

Lustucru

26 03 2016

F_J_K schreef op dinsdag 15 juli 2008 @ 22:05:
[...]
Als je het per maand wilt, kan je de datum opsplitsen, na opzetting naar een string met CStr(). Dan natuurlijk wel rekening houden met aantallen dagen per maand, schrikkeljaren,etc. Maar dat is simpelweg even uitschrijven van wat logica.
Of als dat te moeilijk wordt zoekt je even dateadd() op in de help ;)

De oever waar we niet zijn noemen wij de overkant / Die wordt dan deze kant zodra we daar zijn aangeland


Verwijderd

Topicstarter
Het is mij gelukt om datum op te tellen met idd de dateadd() functie.
Private Sub Text1_BeforeUpdate(Cancel As Integer)

Text3 = DateAdd("m", Text1, "31/12/2000")

End Sub
Als ik een getal in text1 invul telt hij de maanden op bij de datum 31/12/2000

Maar ik zou die datum 31/12/2000 ook willen variabel hebben van een textbox maar daar geeft hij error.

Waneer ik er dit van maak

Text3 = DateAdd("m", Text1, "text2")

Verwijderd

Topicstarter
gevonden

test = text2
Text3 = DateAdd("m", Text1, test)

  • F_J_K
  • Registratie: Juni 2001
  • Niet online

F_J_K

Moderator CSA/PB

Front verplichte underscores

DateAdd
Ah. Zo zie je maar weer, ken vind je functies. Ik had even binnen F1 op datum moeten zoeken voor ik een antwoord gaf :P

[ Voor 4% gewijzigd door F_J_K op 16-07-2008 08:51 ]

'Multiple exclamation marks,' he went on, shaking his head, 'are a sure sign of a diseased mind' (Terry Pratchett, Eric)


  • urk_forever
  • Registratie: Juni 2001
  • Laatst online: 29-11 17:06
Of je gebruikt een DateTime picker in vba waarmee hij een datum kan kiezen. Dan kan je rechtstreeks Text3 = DateAdd("m", Text1, DateTimePicker1.Value) doen.

Hail to the king baby!

Pagina: 1