Toevoegquery's en Expressies

Status
Niet open voor verdere reacties.

janalleman123

Gebruiker
Lid geworden
19 mei 2011
Berichten
37
Hallo, Ik heb een vraagje.

Ik heb een query die ik toevoeg aan een tabel indien een waarde overeenkomt met de datum.

Dus ik heb 2 velden.

Dit is veld Datum en het Veld Moment die geregistreerd staan in een tabel [Plannen]

Het veld datum is een tekst veld keuzelijst met invoervakje en daar staan
dag;maand;kwart;jaar in. In het veld moment staat ook een keuze lijst met veldtype tekst met Begin;Midde;Einde.

Dit is een evenementen database.

Dit is tabel: Events
eventid 1 Naam: Voetballen (bijv)

Dit is tabel: plannen
Planid 1 Datum(dag,maand etc) Moment(ochtend etc)

Dit is tabel: voltooid
voltooiId 1 datum voltooid (date()) etc


Nu append ik de velden in tabel planning en events aan het tabel voltooid.
Dus in het tabel voltooid staan de velden die in de overige tabellen staan.

Dus ik heb append dag Query waar
In het datumveld "Dag" als criterium wordt gezet. omdat het een event is die elke dag
voorkomt
Append Maand query
In het datumveld "maand" als criterium. Alleen nu wil ik dat de computer gaat kijken of het de begin van de maand is of het vandaag het midden van de maand is of het einde.

Dus dan heb ik een nieuwe veld toegevoegd daarin zet ik dan

expr1: (Als de datum van vandaag de 2e is van de maand dat alle evenementen toevoegen aan tabel voltooid die op maand+begin staan) en Anders als de datum van vandaag de 15e van de maand is dan alle evenementen tovoegen die maand+Midden hebben.

En zo ook voor kwartaal en Jaar.

Dus in principe wil ik de evenementen todo(list) zien van vandaag. En dan laat ik de computer voor mij zoeken in de database welke dingen ik vandaag moet doen.

Het is volgens mij iets met

Iif (Day(now) = 2 AND [Plannen]![Moment] = "Begin";"ok";
Iif (Day(now) = 15 AND [Plannen]![Moment] ="Midde";ok;"Niet ok";))

Dit wil ik dus voor Begin Midde en einde van de maand kwartaal (midde kwartaal hoeft niet) en jaar. (Midden jaar hoeft ook niet)

Maar dit werkt dus niet. Ik heb de datum veld er buiten gelaten omdat ik hiervoor de waarde al heb ingevoerd namelijk "Maand" in criterium veld.

Iemand een idee hoe dit eruit moet zien?
 
Maak eens een voorbeeldje; helemaal snappen doe ik het niet, maar als ik met wat gegevens kan stoeien komt het wat makkelijker. Bovendien hoeven we dan niet zelf een test db in elkaar te zetten, wat ons een hoop tijd scheelt :) Liefst in 2003 format, dan kan ik er overdag ook wat mee.
 
http://speedy.sh/RfhBj/test.mdb

Hier is ie

Ik heb voorbeeldje dag gebruikt.

Dus in de Append Query kan je criterium Dag veranderen dan in Maand

En dan naast in een leeg veld

Bijv expr1:

Dan de Expression neerzetten van als het vandaag begin van de maand is dan Insert (sql) Maand Begin evenementen is het het midden van de maand dan insert maand midden evenementen etc etc
 
Laatst bewerkt:
Oh wacht dat is mooi maand werkt nu wel..

Nu alleen kwartaal en jaar nog

Dit is van de maand:
Criterium "Maand"
IIf(Day(Date())=2 And [Plannen]![Moment]="Begin";"ok";IIf(Day(Date())=15 And [Plannen]![Moment]="Midde";"ok";IIf(Day(Date())=28 And [Plannen]![Moment]="Einde";"ok";"niet ok")))
 
Ik snap nog niet wat je nu wilt; hoe ziet je maand query er nu uit? Kun je daar de SQL van posten?
 
Ik snap nog niet wat je nu wilt; hoe ziet je maand query er nu uit? Kun je daar de SQL van posten?


Ik wil een gewoon heel simpel een nieuwe event aanmaken en die toevoegen aan het tabel voltooien wat weer een checklist is.


EventId Eventnaam Datum Moment
1 Voetballen Maand Einde

INSERT INTO

Tabel Voltooien

VoltooiID Eventnaam Datum Moment

Als het vandaag het einde van de maand is dus 28ste van de maand.
Dan voeg het bovenste toe aan het tabel voltooien anders doe je niks.
Het is vandaag 20 December dus niet de 28ste. Dus er worden geen records toegevoegd.
 
Ik vind de query een beetje onhandig, omdat je exacte datums gebruikt; wat als één van de controledagen op een feestdag in het weekend valt? Zelf zou ik dus de query aanpassen zodat hij records toevoegt op a) op de eerstvolgende dag die gelijk is of groter aan de controledag, en b) de records uitfiltert die al in de tabel staan, zodat je voorkomt dat een record meer dan één keer wordt uitgevoerd. Je hebt dan een veel flexibelere oplossing, die evengoed ook nog eens mogelijke fouten elimineert. Ik snap overigens niet waarom je de maandvariant wel werkend krijgt (overigens zie ik nog steeds niet een volledige SQL code) en de andere varianten niet, want die zijn toch qua opzet hetzelfde...
 
Ik vind de query een beetje onhandig, omdat je exacte datums gebruikt; wat als één van de controledagen op een feestdag in het weekend valt? Zelf zou ik dus de query aanpassen zodat hij records toevoegt op a) op de eerstvolgende dag die gelijk is of groter aan de controledag, en b) de records uitfiltert die al in de tabel staan, zodat je voorkomt dat een record meer dan één keer wordt uitgevoerd. Je hebt dan een veel flexibelere oplossing, die evengoed ook nog eens mogelijke fouten elimineert. Ik snap overigens niet waarom je de maandvariant wel werkend krijgt (overigens zie ik nog steeds niet een volledige SQL code) en de andere varianten niet, want die zijn toch qua opzet hetzelfde...
Ja dat klopt maar dat wil ik oplossen in Vbcode. Gezien ik geen expressie kan bedenken die de feestdagen er voor me uit wil halen.

Ik wil ook alleen toevoegen als het evenement er niet in staat. Alleen weet ik niet zo goed hoe ik dat moet doen.
 
Het is niet nodig om een bericht waarop je antwoord in zijn geheel te quooten; je kunt hem prima lezen, omdat hij er gewoon boven staat. Bovendien leest cursief niet zo heel jofel... Liever heb ik dat je antwoord geeft op mijn vraag en de SQL code laat zien :)
 
Ik heb een andere database gemaakt. Omdat ik me bestaande niet wil vernagelen

SQL code hoef ik niet te laten zien.

Ik wil alleen weten welke dag het vandaag is en of dat het begin van de week is het midden van de week is of het einde van de week zo ook voor maand kwartaal en jaar.
Als ik dat weet dan kan ik derest zelf oplossen.

De week die heb ik zelf al opgelost.

De maand is zoals je zei kan je niet bepalen of er een dag in de maand valt op een zaterdag of zondag of op een feestdag. Dus in de expressie kan ik niet kiezen Iif(Day())= 2e van de maand. Want dat kan dan op een zaterdag zondag vallen. Daarom wil ik een expressie die de Werkdag van de maand aan het vbegin van de maand voor me opzoekt en aan het einde van de maand voor me opzoekt (de laatste werkdag)

En zo ook voor het begin van het kwartaal en het einde van het kwartaal.

En het begin van het jaar en het einde van het jaar.

Dat ik dubbele records niet moet laten toevoegen kan ik volgens mijn met een left join oplossen.
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan