Aanvulling query voor rapport wie kan mij helpen.

Status
Niet open voor verdere reacties.

Buttkicker

Nieuwe gebruiker
Lid geworden
20 apr 2012
Berichten
4
Ik heb een database gedownload van internet. Hierin wordt m.b.v. een query een rapport gegenereerd. Dit rapport wil ik uitbreiden met een bestelindicatie zodat je in één oog opslag kunt zien of een artikel besteld moet worden. Het rapport heb ik aangevuld met een tekstvak bestelindicatie. De tabel artikel heeft ook nog de kolommen inhoud, aantal min voorraad. De query ziet er als volgt uit:

SELECT Locatie.LocatieID, Locatie.Locatienummer, Locatie.Locatienaam, Artikel.ArtikelID, Artikel.Artikelnummer, Artikel.Artikelnaam, Artikel.Locatie, Artikel.Leverancier, Artikel.Leveranciersnummer, Sum(Voorraadmutatie.Voorraadmutatie) AS Voorraad
FROM Locatie INNER JOIN (Artikel INNER JOIN Voorraadmutatie ON Artikel.ArtikelID=Voorraadmutatie.ArtikelID) ON Locatie.LocatieID=Voorraadmutatie.LocatieID
GROUP BY Locatie.LocatieID, Locatie.Locatienummer, Locatie.Locatienaam, Artikel.ArtikelID, Artikel.Artikelnummer, Artikel.Artikelnaam
HAVING (((Sum(Voorraadmutatie.Voorraadmutatie))>=0));

Nu dacht ik aan de volgende aanvulling: als de min voorraad <= dan de voorraad x de inhoud dan moet er staan bestellen en als de voorraad groter is dan moet er staan voldoende voorraad.

Alleen hoe krijg ik dit verwerkt in de voorraad?

Alvast bedankt voor de reacties en de eventuele oplossing.
 
Vertaal je eigen zin eens naar het Engels; dan ben je er al zo'n beetje :).
als de min voorraad <= dan de voorraad x de inhoud dan moet er staan bestellen en als de voorraad groter is dan moet er staan voldoende voorraad.
Code:
IIF([min voorraad] <= [voorraad] * [inhoud];"bestellen";"voldoende voorraad")
 
OctaFish bedankt voor je reactie alleen rest er nog één vraag: hoe verwerk ik dat dan in onderstaande query?

SELECT Locatie.LocatieID, Locatie.Locatienummer, Locatie.Locatienaam, Artikel.ArtikelID, Artikel.Artikelnummer, Artikel.Artikelnaam, Artikel.Locatie, Artikel.Leverancier, Artikel.Leveranciersnummer, Sum(Voorraadmutatie.Voorraadmutatie) AS Voorraad
FROM Locatie INNER JOIN (Artikel INNER JOIN Voorraadmutatie ON Artikel.ArtikelID=Voorraadmutatie.ArtikelID) ON Locatie.LocatieID=Voorraadmutatie.LocatieID
GROUP BY Locatie.LocatieID, Locatie.Locatienummer, Locatie.Locatienaam, Artikel.ArtikelID, Artikel.Artikelnummer, Artikel.Artikelnaam
HAVING (((Sum(Voorraadmutatie.Voorraadmutatie))>=0));
 
Ik heb alleen de formule (en dat is een dummy voorbeeld omdat ik de juiste veldnamen niet weet) neergezet. In je query ontwerp wordt het een extra veld, en dat krijgt automatisch een naam (vermoedelijk Expr1). En die kun je dan weer zelf veranderen.
 
Sorry dat ik zo zeur maar ik heb dit gedownload van internet. Ik heb het dus niet zelf gemaakt maar met een kleine aanpassing is het wel bruikbaar voor mij. Ik begrijp dat de formule een dummy voorbeeld is en dat ik daar mijn eigen veldnamen in moet zetten. In het rapport heb ik een extra tekstvak gemaakt met de naam bestelindicatie. Het is dus de bedoeling dat het resultaat daar in komt. Het rapport wordt met onderstaande query gevuld. Nu is dus de vraag nog waar komt het dummy voorbeeld dan te staan in onderstaande query?

SELECT Locatie.LocatieID, Locatie.Locatienummer, Locatie.Locatienaam, Artikel.ArtikelID, Artikel.Artikelnummer, Artikel.Artikelnaam, Artikel.Locatie, Artikel.Leverancier, Artikel.Leveranciersnummer, Sum(Voorraadmutatie.Voorraadmutatie) AS Voorraad
FROM Locatie INNER JOIN (Artikel INNER JOIN Voorraadmutatie ON Artikel.ArtikelID=Voorraadmutatie.ArtikelID) ON Locatie.LocatieID=Voorraadmutatie.LocatieID
GROUP BY Locatie.LocatieID, Locatie.Locatienummer, Locatie.Locatienaam, Artikel.ArtikelID, Artikel.Artikelnummer, Artikel.Artikelnaam
HAVING (((Sum(Voorraadmutatie.Voorraadmutatie))>=0));

Nogmaals bedankt voor de hulp.
 
Je kan dat eenvoudig maken in Ontwerpweergave, dus niet in de SQL weergave.
Vul die formule in een leeg veldje in en klaar is Buttkicker
 
Maar als je het toch in de SQL weergave wilt doen, is het ook simpel:
Code:
SELECT Locatie.LocatieID, Locatie.Locatienummer, Locatie.Locatienaam, Artikel.ArtikelID, Artikel.Artikelnummer, Artikel.Artikelnaam, Artikel.Locatie, Artikel.Leverancier, Artikel.Leveranciersnummer, 
Sum(Voorraadmutatie.Voorraadmutatie) AS Voorraad, IIF([min voorraad] <= [voorraad] * [inhoud],"bestellen","voldoende voorraad") AS Bestelindicatie
FROM Locatie INNER JOIN (Artikel INNER JOIN Voorraadmutatie ON Artikel.ArtikelID=Voorraadmutatie.ArtikelID) ON Locatie.LocatieID=Voorraadmutatie.LocatieID
GROUP BY Locatie.LocatieID, Locatie.Locatienummer, Locatie.Locatienaam, Artikel.ArtikelID, Artikel.Artikelnummer, Artikel.Artikelnaam
HAVING (((Sum(Voorraadmutatie.Voorraadmutatie))>=0));

Maar maomana heeft een beetje gelijk: iemand die liever een query aanpast in de SQL weergave dan in de ontwerpweergave heeft vermoedelijk last van een zonnesteek :). Tenzij de query alleen maar in SQL is aan te passen, zoals een UNION query.
 
Beide weer bedankt. Ik ga kijken of het zo werkt. Ik had inderdaad alleen maar de SQL weergave. Toch knap van mij om met de regen van de afgelopen dagen een zonnensteek op te lopen :D
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan