melding bij invoer juiste datum

  • Onderwerp starter Onderwerp starter RSpan
  • Startdatum Startdatum
Status
Niet open voor verdere reacties.

RSpan

Gebruiker
Lid geworden
10 jun 2009
Berichten
166
Hallo allemaal

Ik heb de volgende vraag:
Ik heb een hoofdformulier waar de klant gekozen wordt, in het subformulier verschijnt dan de tabel waar het rooster wordt ingevoerd.(o.a. datum,tijd, naam e.d.)
Wat ik nu wil is bij het invoeren van de datum dat er gekeken wordt of deze datum in de laatste week van maart ligt, is dit waar dan moet er een melding komen "denk om de wisseling naar zomertijd"(moet een paar seconden in beeld blijven) is het niet waar, geen melding.
Dit moet ook bij de laatste week van oktober maar dan melding wintertijd.
Ik had de volgende code in een query gezet maar deze werkt bij elke ingevoerde datum, dat is niet de bedoeling.
Format([datum];"ww")=”13”
In de query wordt wel keurig alleen de datums in week 13 weergegeven.

Kan iemand mij op weg helpen?
Heel graag :)
Groet
René
 
Ik snap het denk ik niet helemaal: eerst zeg je dat de code werkt bij alle datums en dat dat niet de bedoeling is, in de volgende regel zeg je dat de query alleen de juiste datums laat zien.... :confused:
Zowiezo moet je een code hebben op het formulier, die de datums vergelijkt met week 13, en afhankelijk daarvan (bijvoorbeeld) een formulier laat zien met de gewenste boodschap. Ik weet namelijk niet of je een msgbox op tijd kunt instellen. Een formulier kun je een vaste tijd laten zien, waarna het zichzelf sluit.

Je maakt bijvoorbeeld een formulier [Melding], waar je deze code zet:

Private Sub Form_Timer()
DoCmd.Close acForm, "Melding"
End Sub

De gebeurtenis <Bij Timer> vind je ergens onderin de lijst met gebeurtenissen. Iets lager vind je de tijdsinstelling <Timerinstelling> waar je het aantal secondes intypt dat de melding moet blijven staan: 5000 bijv. is 5 secondes.
 
Ik begrijp dat je het niet snapt, het staat er een beetje verwarrend.
wat ik bedoel te zeggen:
Als ik de query gewoon draai dan werkt hij, geeft dus alleen de dagen in week 13 weer.
Als ik de query koppel aan het datumveld van het subformulier en ik ga in dit formulier gegevens invullen, bij datum een datum wanneer er gewerkt is dan verschijnt er (maakt niet uit welke datum ik invoer) de melding zomertijd.

ik gebruik inderdaad een formulier voor de melding i.v.m. het automatisch verdwijnen na X tijd.
dat werkt prima.
is het niet mogelijk een query aan een veld te hangen om een bepaalde actie uit te voeren bij bepaalde invoer, want daar komt het eigenlijk op neer.




Ik snap het denk ik niet helemaal: eerst zeg je dat de code werkt bij alle datums en dat dat niet de bedoeling is, in de volgende regel zeg je dat de query alleen de juiste datums laat zien.... :confused:
Zowiezo moet je een code hebben op het formulier, die de datums vergelijkt met week 13, en afhankelijk daarvan (bijvoorbeeld) een formulier laat zien met de gewenste boodschap. Ik weet namelijk niet of je een msgbox op tijd kunt instellen. Een formulier kun je een vaste tijd laten zien, waarna het zichzelf sluit.

Je maakt bijvoorbeeld een formulier [Melding], waar je deze code zet:

Private Sub Form_Timer()
DoCmd.Close acForm, "Melding"
End Sub

De gebeurtenis <Bij Timer> vind je ergens onderin de lijst met gebeurtenissen. Iets lager vind je de tijdsinstelling <Timerinstelling> waar je het aantal secondes intypt dat de melding moet blijven staan: 5000 bijv. is 5 secondes.
 
Je kunt absoluut een query als actie laten uitvoeren, bijvoorbeeld op de eigenschap <Na bijwerken> van je datumveld:

Datum_AfterUpdate()
If Val(Format([Datum], "ww")) = 13 Then DoCmd.OpenQuery ("tmp")

bijvoorbeeld.
 
Je kunt absoluut een query als actie laten uitvoeren, bijvoorbeeld op de eigenschap <Na bijwerken> van je datumveld:

Datum_AfterUpdate()
If Val(Format([Datum], "ww")) = 13 Then DoCmd.OpenQuery ("tmp")

bijvoorbeeld.

Iik kom er toch nog niet uit :confused:
ik heb na bijwerken de gebeurtenisprocedure
Private Sub Datum_AfterUpdate()
If Val(Format([Datum])) = 13 Then DoCmd.OpenForm , "zomertijd"
End If
End Sub

geplaatst.
ik krijg nu de volgende foutmelding:
het argument is niet optioneel.

Waar ga ik de mist in??
 
If Val(Format([Datum], "ww")) = 13 Then DoCmd.OpenQuery ("tmp")

Ik vermoed bij het rode gedeelte, die mist bij jou.
 
If Val(Format([Datum], "ww")) = 13 Then DoCmd.OpenQuery ("tmp")

Ik vermoed bij het rode gedeelte, die mist bij jou.

klopt zag het net ook, stom even over het hoofd gezien.
helaas krijg ik nu een andere foutmelding t.w.:
Syntaxisfout


Private Sub Datum_AfterUpdate()
If Val(Format([Datum]),"ww"))= 13 Then DoCmd.OpenForm , "zomertijd"
End If
End Sub

nog een suggestie??

ik houd me aanbevolen
groet
rene
 
Waar geeft hij die fout?

De code moet er zo uit zien:

Code:
Private Sub Datum_AfterUpdate()
If Val(Format([Datum]),"ww"))= 13 Then 
     DoCmd.OpenForm , "zomertijd"
End If
End Sub

of zo:
Code:
Private Sub Datum_AfterUpdate()
If Val(Format([Datum]),"ww"))= 13 Then DoCmd.OpenForm , "zomertijd"
End Sub
 
Laatst bewerkt:
Waar geeft hij die fout?

De code moet er zo uit zien:

Code:
Private Sub Datum_AfterUpdate()
If Val(Format([Datum]),"ww"))= 13 Then 
     DoCmd.OpenForm , "zomertijd"
End If
End Sub

of zo:
Code:
Private Sub Datum_AfterUpdate()
If Val(Format([Datum]),"ww"))= 13 Then DoCmd.OpenForm , "zomertijd"
End Sub

ik blijf dezelfde foutmelding krijgen
nadat ik de datum heb ingevuld en naar de het volgende veld spring wordt deze regel
Code:
If Val(Format([Datum]),"ww"))= 13 Then
rood
 
Heb je het verschil in de beide methode's gezien?

Bij de 1e methode van Michel wordt de code naar de Then voorgezet op de volgende regel en wordt vervolgens afgesloten met een End If.

Bij de 2e methode van Michel wordt de hele If code op dezelfde regel gezet. Je hoeft dan niet af te sluiten met End If.

Ik vermoed dat je de 2e methode gebruikt en ten onrechte met End If afsluit.
 
Heb je het verschil in de beide methode's gezien?

Bij de 1e methode van Michel wordt de code naar de Then voorgezet op de volgende regel en wordt vervolgens afgesloten met een End If.

Bij de 2e methode van Michel wordt de hele If code op dezelfde regel gezet. Je hoeft dan niet af te sluiten met End If.

Ik vermoed dat je de 2e methode gebruikt en ten onrechte met End If afsluit.


heb ik maar
voor de zekerheid heb ik de code van Michel gekopieerd opdat ik niet voor de tweede keer iets over het hoofd zie.

Code:
Private Sub Datum_AfterUpdate()
If Val(Format([Datum]),"ww"))= 13 Then
     DoCmd.OpenForm , "zomertijd"
End If
End Sub

zo staat hij er in
ik heb geen idee waar ik een fout maak

resume:
in het subformulier gebasseerd op een tabel waar een veld [datum] in staat heb ik bij "na bijwerken" een gebeurtenisprocedure aangemaakt met de hierboven weergegeven code.
wanneer ik nu een datum invul en het veld verlaat krijg ik compileerfout, syntaxisfout dan krijgt de eerste regel een gele balk, met pijl ervoor en de tweede regel wordt de tekst rood.

ik hoop dat jullie nog een andere ingeving hebben
alvast bedankt
 
Even samenvatten voor de duidelijkheid: de functie werkt wèl in een query, op alle records? En geeft gelijk een foutmelding als je hem als code in vba maakt?
Ik heb net een testje gemaakt, die prima werkte.

Met deze code:
Code:
    Me.txtWeek = Val(Format(Me.Datum, "ww"))
    If Val(Format(Me.Datum, "ww")) = 50 Then
        DoCmd.OpenForm "frmDLNsubAangemeldVia"
    End If
Dus het ligt niet aan de code; je zou eens kunnen kijken of je de db kunt compileren/herstellen via <Foutopsporing>. het zou best kunnen dat er een andere fout in zit, waar hij over struikelt.
 
Even samenvatten voor de duidelijkheid: de functie werkt wèl in een query, op alle records? En geeft gelijk een foutmelding als je hem als code in vba maakt?
Ik heb net een testje gemaakt, die prima werkte.

Met deze code:
Code:
    Me.txtWeek = Val(Format(Me.Datum, "ww"))
    If Val(Format(Me.Datum, "ww")) = 50 Then
        DoCmd.OpenForm "frmDLNsubAangemeldVia"
    End If
Dus het ligt niet aan de code; je zou eens kunnen kijken of je de db kunt compileren/herstellen via <Foutopsporing>. het zou best kunnen dat er een andere fout in zit, waar hij over struikelt.

Dat had ik al gedaan maar hij struikeld alleen over deze regel::mad:

Code:
If Val(Format([Datum]),"ww"))= 13 Then


ik ga het even proberen in een testbase, kijken of het daarin wel werkt,
wordt vervolgd.:rolleyes:

alvast bedankt voor het meedenken:thumb:
groet
René

ps. hij werkt inderdaad wel in een query over alle records
 
Laatst bewerkt:
Staat het scheidingsteken in je Windows instellingen wel goed? Bij mij is het zo dat ik in queries een puntkomma (;) moet gebruiken, maar in VBA een komma (,). Als je dus zomaar kopieert van query naar VBA krijg je een foutmelding...
 
Staat het scheidingsteken in je Windows instellingen wel goed? Bij mij is het zo dat ik in queries een puntkomma (;) moet gebruiken, maar in VBA een komma (,). Als je dus zomaar kopieert van query naar VBA krijg je een foutmelding...

klopt, heb ik correct staan ; in query en , in vb,
inmiddels heb ik ook in de testbase , helaas,:( hetzelfde resultaat.
de query draait goed de vb code geeft een foutmelding.
ik probeer even een voorbeeldje te plaatsen misschien geeft dat meer duidelijkheid .
 
hierbij het voorbeeldje.
gelukkig krijg ik nu een andere fout melden, het wordt anders toch wat eentonig, elke keer dezelfde melding.
bij de regel
Code:
     DoCmd.OpenForm , "zomertijd"
krijg ik nu de melding "het argument is niet optioneel"
nu is mijn vb kennis zeer beperkt (ik leer elke keer meer) dus mij zegt het niets.:o
ik hoop jullie meer:)

alweer bedankt voor de moeite:thumb::thumb:
rené
 

Bijlagen

Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan