Begin kilometerstand bepalen uit hoogste waarde van kenteken

Status
Niet open voor verdere reacties.

ceebee

Gebruiker
Lid geworden
17 okt 2000
Berichten
97
Als het veld km_oplevering in tabel Klanten de focus krijgt wil ik de hoogste inleverkilometerstand (km_inlevering) van de auto met het gekozen kenteken als beginstand noteren in het huidige record (als dit veld tenminste nog niet is ingevuld).

Private Sub Km_oplevering_GotFocus()
On Error GoTo Err_Km_oplevering_GotFocus
If (Me.Km_oplevering = 0 And Me.Kenteken) Then
Km = DMax([Km_inlevering], "Klanten", [Kenteken] = 1)
Me.Km_oplevering = Km
End If

Exit_Km_oplevering_GotFocus:
Exit Sub

Err_Km_oplevering_GotFocus:
MsgBox Err.Description
Resume Exit_Km_oplevering_GotFocus

End Sub

Me. Km_oplevering levert echter altijd 0 op. Wat doe ik fout?
 
Ik weet het niet zeker, maar volgens mij moet je If (Me.Km_oplevering = 0
vervangen door If (Me.Km_oplevering = "" of " "

Want als er niets in het veld staat is het volgens mij altijd 0.

En met "" of " " zeg je in VBA in WORD dat hij het veld de waarde leeg heeft/is.
 
Is het niet makkelijker om deze waarde standaard te laten vullen bij kiezen iets in de trend van :

zie het bestandje
 

Bijlagen

Werkt ook niet

Bedankt, maar jouw meegeleverde voorbeeld werkt ook niet.
Het idee is verder hetzelfde. I.p.v. DMax gebruik je DLast. Ik krijg ook hier steeds 0 als antwoord. Bovendien krijg ik een fout als ik de " " rondom de [ ] laat staan.
 
Werkt

Bedankt, dit werkt.
Ik zou nog één verfijning toe willen passen:
als je de eerste keer per ongeluk een verkeerde auto kiest, wordt onmiddelijk de km-stand ingevuld. Kies je dan een andere, omdat je je vergist hebt, dan is het veld niet meer 0 en wordt de kmstand van de nieuwe auto niet overgenomen...
 
maar ook dat is op te lossen
vernader de code die er nu staat in

Option Compare Database
Public kidvoor

Private Sub KentekenID_AfterUpdate()
kid = Me.KentekenID
If kid <> kidvoor Then
Me.KMbegin = 0
End If

If Me.KMbegin = 0 Then
kbegin = DMax("[kmeind]", "tblKM", "[kentekenID] = " & kid)
Me.KMbegin = kbegin
End If
End Sub
Private Sub KentekenID_Enter()
kidvoor = Me.KentekenID
End Sub
 
Dat is hem

Ik heb hem nog uitgebreid om te voorkomen, dat bestaande reeds ingevulde records ook gewijzigd worden op deze manier. Bedankt!!:thumb:

Option Compare Database
Public kidvoor As Long, kmstart As Long

Private Sub Kenteken_AfterUpdate()
kid = Me.Kenteken
If kid <> kidvoor And kmstart = 0 Then
Me.Km_oplevering = 0
End If
If Me.Km_oplevering = 0 Then
kbegin = DMax("[Km_inlevering]", "klanten", "[Kenteken] = " & kid)
Me.Km_oplevering = kbegin
End If
End Sub

Private Sub Kenteken_Enter()
kidvoor = Me.Kenteken
kmstart = Me.Km_oplevering
End Sub
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan