Week en dag van vandaag automatisch invoeren

Status
Niet open voor verdere reacties.
ok ik heb een datumveld toegevoegd nu moet ik nog die query daar aan zien te koppelen hoe werkt dit?
op welke basis moet ik die query maken?
ik heb besloten om het op deze manier te doen aangezien dit mij de makkelijkste manier lijkt.
sorry voor de onduidelijkheid maar ik had in het begin geen idee wat de mogelijkheden waren.
en natuurlijk bedankt voor jullie hulp tot nu toe.

Jesse
 
Een query maak je op basis van een tabel. Daar zit dus ook je datumveld in. Stel dat dat veld [Datum] heet, dan ziet de weekcode er zo uit:

Code:
WeekCode: Right("00" & Format$([Datum];"ww";2;2);2) & Weekday([Datum];2)
Hierbij wordt eerst een twee-cijferig weeknummer gemaakt (met het Right en Format stuk) en daar plak je dan het Dagnummer achter (Weekday). Je kunt daarbij aangeven of je op zondag wilt beginnen (Weekday([Datum];1)), of (in dit voorbeeld) op Maandag (Weekday([Datum];2)).
Je kunt de functie ook zelf maken, met de functie <Opbouwen>.
 
ik kreeg nog steeds een melding van ongeldige waarden enz. nu heb ik een query op basis van de tabel met de datum er in.
in mijn hoofd tabel heb ik een apart veld gemaakt voor weeknummer de naam van dit veld is Test.
ik heb alle nodige velden in de query ingevoegd dus nu heb ik een apart datumveld en een apart veld voor het weeknummer.
De code wil maar niet werken en geeft een hoop meldingen dat er dingen fout zijn haakjes en noem maar op.
zelf bouwen met de expressie opbouwen optie loopt niet erg gesmeerd omdat ik hier nog nooit zelf mee gewerkt heb.
en het datumveld heet inderdaad Datum.

Jesse
 
Ik zie dat je twee identieke queries hebt gemaakt op basis van je tabel. In geen van de twee (logisch, ze zijn identiek...) zit mijn berekening. Dus ik kan niet zien wat je fout doet. Maar in bijgaand exemplaar heb ik in de Test query de berekening geplakt. Met resultaat...
 

Bijlagen

  • Database Voorbeeld 3.zip
    14,2 KB · Weergaven: 20
dit komt omdat ik de berekening niet kon opslaan door de foutmelding het systeem simpelweg verwijderde de code weer.
en misschien is er iets fout gegaan bij het converteren enz. ik gebruik office 2007.
 
Laatst bewerkt:
Berekeningen sla je in principe ook niet op. Dat is de grap ervan.... Eén van de basisregels van een goede database is, dat gegevens die je kunt berekenen, niet worden opgeslagen. Ergo: als je een datum hebt, weet je het weeknummer, en weet je de weekdag, en weet je dus ook de weekcode :)

Overigens gaat de functie van Harry bij jou niet werken, omdat jouw veld [wk/dag] een Numeriek veld is; weeknummers die uit één cijfer bestaan (de weken 1-9) zullen dus verkeerd berekend worden door de functie, omdat die de eerste 2 cijfers van links pakt voor het weeknummer.
 
dus als ik de code
Wk/dag: Right("00" & Format$([Datum];"ww";2;2);2) & Weekday([Datum];2)
invoer bij het bestaande veld wk/dag zou dit moeten kunnen?
 
ik probeerde het net maar je kunt natuurlijk geen codes toevoegen in een tabel.
Hoe zorg ik ervoor dat de code overal word toegepast ( alle formulier enz.) voor een veld uit de tabel?
 
Als het veld WeekDag numeriek is, dan is de oplossing, als je mijn code wilt gebruiken, vrij simpel.
Overigens klopt dat niet met een de eerdere omschrijving van het veld:
het vervelende is dat het geen doorlopend getal is maar steeds eindigt bij 7 017 027 127

DatumVanWeeknummer: fBepaalDatumVanWeeknummer(Right$("000" & [WeekDag];3))
 
ik had het hier eigenlijk over de code van octa maar ik zal kijken.
 
Hoe zorg ik ervoor dat de code overal word toegepast ( alle formulier enz.) voor een veld uit de tabel?

Maak een functie van de code, en gebruik die in queries en als besturingselementbron van tekstvakken in formulieren en/of rapporten
 
Ik zou het veld [Wk/dag] verwijderen, want dat heb je dus niet nodig. Je hebt er ook geen sleutelveld van gemaakt (je hebt namelijk geen sleutelveld in je tabel, wat eigenlijk wel zou moeten). Op je formulieren kun je een niet-afhankelijk tekstveld maken, waar je de formule dan op deze manier in zet als Besturingselementbron: =Right("00" & Format$([Datum];"ww";2;2);2) & Weekday([Datum];2)
Je kunt er ook een functie van maken, die je in een nieuwe module kunt zetten:

Code:
Function Weekcode(Datum As Date) As String
    Weekcode = Right("00" & Format$([Datum], "ww", vbMonday, vbFirstFourDays), 2) & Weekday([Datum], vbMonday)
End Function

Je krijgt dan op het tekstvak als Besturingselementbron:=WeekCode([Datum])

Om even samen te vatten: Je hebt dus op je formulier het veld [Datum] uit je tabel; dit kun je bedienen/invullen met een Datumpicker. Werkt heel simpel: zodra je op het datumveld klikt, krijg je een kalender, je kiest een datum, en hij wordt opgeslagen. Het veld Weekcode wordt berekend op basis van de datum, en die zie je dus als je door de verschillende records bladert keurig netjes berekend worden. Het voordeel van een functie, is dat hij wat makkelijker is aan te roepen als je de berekening vaker nodig hebt.
 
Laatst bewerkt:
ik zou graag hebben dat hij in mijn invoerformulier automatisch de datum van vandaag al aangeeft.
hoe werkt dit dan want de besturingselementbron moet natuurlijk de hoofd tabel blijven.
 
Je Datumveld geef je een Standaardwaarde: =Date(). Dat doe je in de tabel. Daarmee wordt het tekstveld op het formulier ook automatisch gevuld, want het formulier is gekoppeld aan aan de tabel. Dus het enige dat nog moet worden berekend, is de Weekcode. En dat doe je door een niet-afhankelijk tekstveld met de formule, dat de ingevulde datum uit het datumveld omzet.
 
maar worden mijn nog niet ingevulde datums dan ook standaard de dag van vandaag?
ik heb het alleen op mijn invulformulier ingevuld en daar werkt het ook gewoon.
met de weekcode bedoel je wk/dag die heb ik al gemaakt en het werkt tot zover prima.
 
Bij bestaande records wordt de datum niet ingevuld; dat zul je met de hand, of, als de weekcode uit 3 cijfers bestaat, met de functie van Harry moeten doen middels een bijwerkquery. Het veld wk/dag mag je wat mij betreft uiteraard blijven gebruiken, maar ik zou 'm zelf weggooien. Hij is volkomen overbodig als je vanaf nu met een datum werkt. En waarom zou je gebruikers twee keer (in beginsel) dezelfde informatie laten invullen? Die bovendien in het geval van je datum automatisch wordt ingevuld, en wat betreft [wk/dg] moet worden ingetypt? Ik zou het wel weten...
Ook al omdat je met een datumveld mooie maandrapporten, jaarrapporten, weekrapporten etc. kan maken!
 
nu zit ik wel met een groot probleem op het moment heb ik enorm veel filters die wk/dag gebruiken om te filteren.
is er echt geen mogelijkheid om het vak wel op basis van de tabel te maken?
 
of zou het mogelijk zijn de uitgerekende waarden in het vak wk/dag op te slaan?
maar dan word het misschien helemaal een zootje.
 
Als je het veld verwijdert, kun je het als queryveld weer terug laten komen. Ik heb in mijn voorbeelden steeds de naam WeekCode gebruikt; jij kunt uiteraard wk/dag daarvoor nemen. Voorbeeldje: je hebt nu een formulier dat is gebaseerd op de tabel [Hoofdzaken]. Je maakt nu een query op basis van de tabel [Hoofdzaken], en daarin maak je een veld [wk/dag] met de formule wk/dag:Weekcode([Datum]), en die query noem je: [qHoofdtabel]. Vervolgens pas je de Recordbron aan van je formulier: je vervangt [Hoofdtabel] door [qHoofdtabel]. En that's it! Nu heb je het veld [wk/dag] weer werkend op je formulier.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan