Query uitvoeren aan de hand van de dag

Status
Niet open voor verdere reacties.

djemer

Gebruiker
Lid geworden
13 jun 2011
Berichten
40
Beste,

Ik heb een database die artikelen weergeeft waarvan de uiterste magazijn THT verloopt. Op maandag t/m vrijdag gebruik ik "aantal dagen < 0" en omdat er 's zondags niet gewerkt wordt gebruik ik 's zaterdags "aantal dagen < 1".
Nu moet ik altijd de database openen en de query handmatig uitvoeren waarna er een THT-lijst als .xls naar de betreffende afdelingen gemaild wordt.
Mijn uitdaging was om dit te automatiseren en toe te voegen aan de scheduler die wij hebben draaien. Ik ben al een heel eind, maar het laatste probleem waar ik tegenaan loop is dat op de zaterdag een andere query uitgevoerd moet worden dan op maandag t/m vrijdag. Mijns inziens is dit te verwezenlijken door een module toe te voegen. Echter heb ik vrij weinig kennis van Visual Basic, waardoor het een brug te ver lijkt. Ik wil hetvolgende dus in VB-code proberen te zetten.

Code:
ALS weekdag <> "Zaterdag"
DAN fmail_SendObjectNT QryMaVr
ANDERS fmail_SendObjectNT QryZa

In de scheduler kan ik aangeven dat de macro niet op zondag uitgevoerd kan worden. Hierdoor hoeft dit niet in de VB code te komen.

Ik hoop dat iemand van jullie mij op weg kan helpen.
 
Laatst bewerkt:
Waaron niet één query waarin je met Weekday(Date()) bepaalt of je een doordeweekse berekening gebruikt of de zaterdag variant?
Code:
Expr1: IIf(Weekday(Date();1)<6;[Aantal dagen];[Aantal dagen]-1)
 
Omdat ik niet weet hoe ik dit moet inpassen in mijn code. Hieronder zal ik een voorbeeld plaatsen van de query's.

Ma-Vr:
Code:
SELECT Tbl_THT_AGF.ARTNR, Tbl_THT_AGF.DESCR, Tbl_THT_AGF.LOCNAME, Tbl_THT_AGF.AANTAL_DAGEN_MAGAZIJN, Tbl_THT_AGF.QUANTITY, Tbl_THT_AGF.EIND_MAGAZIJN_THT, Tbl_THT_AGF.EIND_THT
FROM Tbl_THT_AGF
WHERE (((Tbl_THT_AGF.LOCNAME)<>"RU-VGD") AND ((Tbl_THT_AGF.AANTAL_DAGEN_MAGAZIJN)<=0) AND ((Tbl_THT_AGF.QUANTITY)<>0) AND ((Left([AANTAL_DAGEN_MAGAZIJN],1))="-"))
ORDER BY Tbl_THT_AGF.AANTAL_DAGEN_MAGAZIJN;

Za:
Code:
SELECT Tbl_THT_AGF.ARTNR, Tbl_THT_AGF.DESCR, Tbl_THT_AGF.LOCNAME, Tbl_THT_AGF.AANTAL_DAGEN_MAGAZIJN, Tbl_THT_AGF.QUANTITY, Tbl_THT_AGF.EIND_MAGAZIJN_THT, Tbl_THT_AGF.EIND_THT
FROM Tbl_THT_AGF
WHERE (((Tbl_THT_AGF.LOCNAME)<>"RU-VGD") AND ((Tbl_THT_AGF.AANTAL_DAGEN_MAGAZIJN)<=1) AND ((Tbl_THT_AGF.QUANTITY)<>0) AND ((Left([AANTAL_DAGEN_MAGAZIJN],1))="-"))
ORDER BY Tbl_THT_AGF.AANTAL_DAGEN_MAGAZIJN;

Ik heb geprobeerd om de code in de WHERE-clause te plaatsen, in plaats van ((Tbl_THT_AGF.AANTAL_DAGEN_MAGAZIJN)<=0), maar dit wilde niet werken.
 
Laatst bewerkt:
Wat je in ieder geval niet moet doen, is berichten waar je op reageert in zijn geheel quooten; dat maakt de draad er nogal onoverzichtelijk op. Dus graag die quoot verwijderen, en niet meer doen :)
 
En de query ziet er dan zo uit:
Code:
SELECT ARTNR, DESCR, LOCNAME, AANTAL_DAGEN_MAGAZIJN, QUANTITY, EIND_MAGAZIJN_THT, EIND_THT
FROM Tbl_THT_AGF
WHERE (LOCNAME<>"RU-VGD") AND (IIf(Weekday(Date();1)<6;[AANTAL_DAGEN_MAGAZIJN]<=0;[AANTAL_DAGEN_MAGAZIJN]<=1)=True) AND (QUANTITY<>0) AND (Left([AANTAL_DAGEN_MAGAZIJN],1)="-")
ORDER AANTAL_DAGEN_MAGAZIJN;
 
Excuses voor het quoten, ik heb het aangepast.
De query had ik al opgebouwd zoals je in je vorige reactie aangaf, maar helaas krijg ik een syntax-fout in de query-expressie.
Code:
(LOCNAME<>"RU-VGD") AND (IIf(Weekday(Date();1)<6;[AANTAL_DAGEN_MAGAZIJN]<=0;[AANTAL_DAGEN_MAGAZIJN]<=1)=True) AND (QUANTITY<>0) AND (Left([AANTAL_DAGEN_MAGAZIJN],1)="-")
Ik heb al wat met haakjes en aanhalingstekens gerotzooit, maar dat was de oplossing niet.
Ik probeer het even via de ontwerpweergave.
 
Ik heb je db niet, dus ik kan het niet controleren. Ik heb de constructie dus in een eigen veldje getest, waar hij prima werkt. Ik heb in de code alleen de veldnaam aangepast. Dus als je er niet uitkomt: maak er een voorbeeldje van :)
 
Ik heb de syntax error eruit gekregen, in de IIf functie moesten de puntkomma's vervangen worden door komma's. Ik ga nu de uitkomst van de query vergelijken met de uitkomst van de oude werkwijze. In ieder geval alvast bedankt voor de moeite!
 
Een aantal dagen simultaan gedraaid met de oude werkwijze en de uitkomst van de query lijkt overeen te komen.

Bedankt voor de gedane moeite en voor het vergroten van mijn kennis!
 
Status
Niet open voor verdere reacties.

Nieuwste berichten

Terug
Bovenaan Onderaan