Toon posts:

[VBA] Data berekenen in Recordsets

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Hallo,

Ik probeer een aantal data te berekenen, doe dit sinds kort met Datediff en werkt prima, maar probeer nu een datumveld vanuit een recordset aan te spreken en het lijkt erop dat dit niet of anders werkt. Heb al een tijdje op sites gezocht, maar kan er eigenlijk niets over terugvinden. Wel een aantal mensen die met een query uit hun probleem konden komen, maar dat is in dit geval geen optie volgens mij.

Ik heb een stukje code bijgesloten, misschien dat iemand me verder kan helpen?

Het vervolg van de code is dat er nog gekeken wordt in de recordset of er voldaan wordt een een aantal criteria en vervolgens wordt er met Word een merge gemaakt. Tevens worden er dan een aantal velden bijgewerkt.

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
Dim rst As DAO.Recordset
Set rst = Forms!Klanteninvoer.RecordsetClone
rst.FindFirst "Klanteninvoer.ID = " & Keuzelijst
Forms!Klanteninvoer.Bookmark = rst.Bookmark

Dim strVoorletters As String
Dim strAchternaam As String
Dim strStraat As String
Dim strHuisnr As String
Dim strPostcode As String
Dim strWoonplaats As String
Dim strAanhef As String
Dim strTijdVerschil As String

Dim appword As New Word.Application

strVoorletters = rst!Voorletters
strAchternaam = rst!Achternaam
strStraat = rst!Straat
strHuisnr = rst!Huisnr
strPostcode = rst!Postcode
strWoonplaats = rst!Woonplaats
strAanhef = rst!Achternaam
strTijdVerschil = rst![Datum infopakket verzonden] - [Date]

‘of strTijdverschil = Datediff (d, [Datum infopakket verzonden], Date)
‘geen van beiden werkt

If strTijdVerschil <= 7 Then 
rst![Datum inschrijving] = Date
rst![Inschrijving ontvangen] = True

Acties:
  • 0 Henk 'm!

  • Lustucru
  • Registratie: Januari 2004
  • Niet online

Lustucru

26 03 2016

Verwijderd schreef op dinsdag 29 november 2011 @ 09:49:
code:
1
2
3
Dim strTijdVerschil As String
strTijdVerschil = rst![Datum infopakket verzonden] - [Date]
strTijdverschil = Datediff (d, [Datum infopakket verzonden], Date)
1: Tijdverschil als tekst? Waarom geen numerieke waarde of datumtijd variabele?
2: [Date] op deze manier is onbekend in VBA context
3; [datum infopakket verzonden] is ook onbekend in de VBA context, rst![Datum infopakket verzonden] wel.

Zet option explicit eens aan en je zult zien dat je code niet meer compilet.
Gebruik in versie 1 date() ipv [Date] of in versie 2 rst![]

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


Acties:
  • 0 Henk 'm!

  • Witte
  • Registratie: Februari 2000
  • Laatst online: 29-07 11:23
Inderdaad: de functie DateDiff levert een variable op van het type long

De juiste code is:

Dim tijdverschil as long
[...]
tijdverschil = DateDiff(d, datum1, datum2)

ofwel:
tijdverschil = datediff("d", date(), rst!vergelijkdatum)
NB: de d staat tussen " "

maar ook:
tijdverschil = rst!vergelijkdatum - date()

Verder: als je vaak in een procedure rst! gebruikt, kan je ook gebruik maken van de with-constructie:

code:
1
2
3
4
a = rst!a
b = rst!b
c = rst!c
rst.update


is equivalent met:
code:
1
2
3
4
5
6
with rst
  a = !a
  b = !b
  c = !c
  .update
end with

[ Voor 35% gewijzigd door Witte op 01-12-2011 15:45 ]

Houdoe