satndaard Datum veld in formulier optellen

Status
Niet open voor verdere reacties.

leek01

Gebruiker
Lid geworden
3 okt 2017
Berichten
17
Ik ben gisterenavond 1,5 uur bezig geweest met 1 veld in een formulier en ik ben er nog steeds niet uit:

Ik heb een formulier met 2 velden waar een datum in dient te komen:

Factuurdatum = deze wordt ingegeven door de gebruiker van de database.
Vervaldatum = wil ik gelijk stellen aan een standaardwaarde die 21 dagen verder ligt dan de factuurdatum.

Wat ik heb gedaan is in de eigenschappenvenster van dit veld in "standaardwaarde" ingegeven "=[Factuurdatum]+21" en met "=DateAdd("d";21;[Factuurdatum])" krijg ik dezelfde foutmelding
Dit werkt niet. iets met foute expressie.

Als ik "[Factuurdatum]+21" in het veld zelf ingeef dan gaat het wel goed. Het probleem hiervan is dat de waarde niet aangepast kan worden door de gebruiker.

De bedoeling is dat de database in dit veld een standaardwaarde weergeeft die de gebruiker wel kan wijzigen, als hij/zij hiervan wil afwijken.
Kan iemand mij op weg helpen aub. Op de web en deze site kom ik geen oplossing tegen, als die er al is.

mvg
 
Wat ik heb gedaan is in de eigenschappenvenster van dit veld in "standaardwaarde" ingegeven "=[Factuurdatum]+21" en met "=DateAdd("d";21;[Factuurdatum])" krijg ik dezelfde foutmelding
Dat je dit niet kan doen, is niet meer dan logisch. Een standaardwaarde is een waarde die in een veld wordt ingevoerd op het moment dat je een nieuw record aanmaakt. Dat werkt perfect bij het veld [Factuurdatum] want die wil je (doorgaans) ingevuld hebben op en met de dag dat je de factuur aanmaakt. Dus als je een nieuw record maakt, weet je wat de datum gaat worden. Echter, bij het maken van een nieuw record is er nog niks, dus ook geen factuurdatum. De formule =[Factuurdatum]+21 kan dus nooit worden uitgevoerd. Ergo: een foutmelding is je deel.

Als ik "[Factuurdatum]+21" in het veld zelf ingeef dan gaat het wel goed. Het probleem hiervan is dat de waarde niet aangepast kan worden door de gebruiker.
Ook dit is een logisch en volkomen verklaarbaar probleem. Een tekstveld kan maar één besturingselementbron (daar hebben we het over) hebben, en dat is ofwel een tabelveld, ofwel een formule/verwijzing/tekst. Jij kiest nu voor een formule, en dan is de inhoud dus niet meer te wijzigen. En zelfs als je de inhoud wél kon wijzigen, heb je er nog niks aan want de gewijzigde waarde wordt nergens opgeslagen. Dus de volgende keer zie je gewoon weer de formule terug.
Dat je op deze site geen oplossing hebt kunnen vinden zegt meer over je zoekcapaciteiten dan over de site, want ik heb deze vraag al meerdere keren beantwoord, en die antwoorden zijn dus echt wel te vinden :). Maar dan heb je dus niet de goede zoekwoorden gebruikt. Ik vind ook niet altijd alles terug wat ik gepost heb, dus wat dat betreft sta je niet alleen ;).

De oplossing is dus eigenlijk simpel, maar vereist wel enige code om goed te laten werken. Wat je dus in ieder geval moet doen: het tekstveld moet gekoppeld zijn aan het tabelveld. Dat betekent dus: geen formule in de besturingselementbron. Daarnaast heeft Standaardwaarde een heel andere functie, dus die is ook niet echt te gebruiken. Klein voorbehoud: als je de factuurdatum voor pakweg 90% altijd op de huidige datum invult, en je standaard 21 dagen erbij wilt hebben, dan staat niets je tegen om bij [UitersteFactuurdatum] de standaardwaarde zo in te stellen: =Date()+21. Immers: als de factuurdatum de huidige datum wordt, dan is de [UitersteFactuurdatum] ook de huidige datum + 21. Dan is dat veld dus weliswaar niet gekoppeld, maar toch vrijelijk in te vullen. En hoef je niks te doen.
Wil je het vanuit het veld Factuurdatum regelen, dan moet je dus een procedure maken die getriggerd wordt op de AfterUpdate van dat veld. Dan kun je probleemloos deze formule gebruiken:

Code:
Private Sub FactuurDatum_AfterUpdate()
    Me.UitersteFactuurDatum.Value = DateAdd("d", 21, Me.FactuurDatum.value)
End Sub
 
Bedankt voor de code.

Het probleem is dat de factuurdatum ingevuld dient te worden en is dus niet vandaag/huidige datum, oftewel de dag van de boeking.
Anders was het wel op te lossen zoals je aangeeft.

Maar ik denk dat de code datgene is wat ik moet hebben. Zal vanavond weer eens gaan hobbyen.


PS: Ik heb echt een halfuur zitten zoeken en maar niet de juiste oplossing kunnen vinden. Maar inderdaad de juiste zoekterm is ook een mooie / juiste hulpstuk.
In ieder geval bedankt maar weer voor je antwoord.

:d
 
Mijn oplossing werkt hoe dan ook altijd; als je een factuurdatum invult, of die nu standaard is ingevuld of niet. Eigenlijk werkt hij zelfs beter als hij niet standaard wordt ingevuld met de huidige datum, omdat die dan vaak niet meer wordt aangepast. En als het tekstveld met de datum niet veranderd wordt, dan treedt de code AfterUpdate dus nooit op. En krijg je alsnog geen uiterste datum ingevuld. Maar er zijn zóveel oplossingen te bedenken voor dit probleem, daar moet wat bij zitten wat voor jou goed werkt.
 
Nou octafish, deze was meer dan genoeg. Het werkt perfect. De nieuwe datum wordt weergegeven, opgeslagen in de tabel en is zelfs aanpasbaar.
Wat wil je nog meer.
TOP.:thumb:
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan