I den här artikeln förklaras hur du använder en fråga med högsta värde i Access för att hitta de senaste eller tidigaste datumen i en uppsättning poster. Du kan använda informationen som den här typen av fråga returnerar för att besvara en mängd olika affärsfrågor, till exempel när en kund senast lade en beställning.
Vad vill du göra?
Förstå hur toppvärdesfrågor fungerar med datum
Du använder en fråga med högsta värde när du behöver hitta poster som innehåller de senaste eller tidigaste datumen i en tabell eller grupp med poster. Du kan sedan använda data för att svara på flera typer av affärsfrågor, till exempel:
-
När gjorde en anställd senast en försäljning? Svaret kan hjälpa dig att identifiera en mest produktiv eller minst produktiv anställd.
-
När gjorde en kund senast en beställning? Om en kund inte har gjort en beställning under en viss tidsperiod kanske du vill flytta kunden till en inaktiv lista.
-
Vem har nästa födelsedag eller nästa n födelsedag?
Regler för att skapa och använda toppvärdesfrågor
Du skapar en fråga med det högsta värdet genom att först skapa en urvalsfråga. Beroende på vilka resultat du vill använda kan du antingen använda en sorteringsordning för frågan eller konvertera frågan till en summafråga. Om du konverterar frågan använder du sedan en mängdfunktion, till exempel Max eller Min , för att returnera det högsta eller lägsta värdet, eller Första eller Sista för att returnera det tidigaste eller senaste datumet. Du använder summafrågor och mängdfunktioner endast när du behöver hitta data som finns i en uppsättning grupper eller kategorier. Anta till exempel att du måste hitta försäljningssiffrorna för ett visst datum för varje ort där företaget är verksamt. I så fall blir städerna kategorier (du måste hitta data per ort), så du använder en summafråga.
Kom ihåg att oavsett frågetyp måste frågorna använda fält som innehåller beskrivande data, till exempel kundnamn, och även ett fält som innehåller de datumvärden som du vill söka efter. Dessutom måste datumvärdena finnas i ett fält som har datatypen Datum/tid. De frågor som beskrivs i den här artikeln misslyckas om du försöker köra dem mot datumvärden i ett fält med kort text. Om du vill använda en summafråga måste dessutom datafälten innehålla kategoriinformation, till exempel ett fält för ort eller land/region.
Välja mellan en fråga med de högsta värdena och ett filter
Välj något av följande för att avgöra om du ska skapa en fråga med de högsta värdena eller använda ett filter:
-
Om du vill returnera posterna med de senaste eller senaste datumen i ett fält, och du inte känner till de exakta datumvärdena, eller om de inte spelar någon roll, skapar du en fråga med toppvärden.
-
Om du vill returnera alla poster där datumet matchar, är före eller senare än ett visst datum använder du ett filter. Om du till exempel vill se försäljningsdatum mellan april och juli använder du ett filter. En fullständig diskussion om filter ligger utanför det här avsnittet.
Mer information om hur du skapar och använder filter finns i artikeln Använda ett filter för att visa valda poster i en Access-databas.
Hitta det senaste eller tidigaste datumet
I stegen i det här avsnittet förklaras hur du skapar en grundläggande toppvärdesfråga som använder en sorteringsordning, plus en mer avancerad fråga som använder uttryck och andra villkor. I det första avsnittet visas de grundläggande stegen för att skapa en fråga med toppvärden, och i det andra avsnittet förklaras hur du hittar de kommande födelsedagarna genom att lägga till villkor. I stegen används data i följande exempeltabell.
Efternamn |
Förnamn |
Adress |
Ort |
Land/region |
Födelsedatum |
Anställningsdatum |
---|---|---|---|---|---|---|
Barnhill |
Jonas |
1 Main St. |
New York |
USA |
05-Feb-1968 |
10 juni 1994 |
Heloo |
Waleed |
52 1st St. |
Boston |
USA |
22 maj 1957 |
22-nov-1996 |
Pica |
Guido |
3122 75th Ave. S.W. |
Seattle |
USA |
11-nov-1960 |
11 mars 2000 |
Bagel |
Jean Philippe |
1 Contoso Blvd. |
London |
Storbritannien |
22-Mar-1964 |
22 juni 1998 |
Pris |
Julian |
Calle Smith 2 |
Mexico City |
Mexiko |
05 juni 1972 |
den 5 januari 2002 |
Hughes |
Christine |
3122 75th St. S. |
Malmö |
USA |
23-jan-1970 |
23-Apr-1999 |
Riley |
Steve |
67 Big St. |
Tampa |
USA |
14-Apr-1964 |
14 oktober 2004 |
Birkby |
Dana |
2 Näsig Pkwy |
Piteå |
USA |
29 oktober 1959 |
29 mars 1997 |
Om du vill kan du ange dessa exempeldata i en ny tabell manuellt, eller så kan du kopiera den här exempeltabellen till ett kalkylbladsprogram, till exempel Microsoft Excel, och sedan använda Access för att importera det resulterande kalkylbladet till en tabell.
Skapa en fråga med grundläggande toppvärden
-
Klicka på Frågedesign i gruppen Frågor på fliken Skapa.
-
I dialogrutan klickar du på den tabell som du vill använda i frågan, klickar på Lägg till för att placera tabellen i den övre delen av designern och klickar sedan på Stäng.
-eller-
Dubbelklicka på tabellen och klicka sedan på Stäng.
Om du använder exempeldata som visas är föregående avsnitt lägger du till tabellen Anställda i frågan.
-
Lägg till de fält som du vill använda i frågan i designrutnätet. Du kan dubbelklicka på varje fält eller dra och släppa varje fält i en tom cell på raden Fält .
Om du använder exempeltabellen lägger du till fälten Förnamn, Efternamn och Födelsedatum.
-
I fältet som innehåller dina högsta eller lägsta värden (fältet Födelsedatum, om du använder exempeltabellen), klickar du på raden Sortera och väljer antingen Stigande eller Fallande.
Fallande sorteringsordning returnerar det senaste datumet och Stigande sorteringsordning returnerar det tidigaste datumet.
Viktigt!: Du måste ange ett värde på raden Sortera endast för fält som innehåller dina datum. Om du anger en sorteringsordning för ett annat fält returnerar frågan inte det resultat du vill ha.
-
På fliken Frågedesign i gruppen Frågekonfiguration klickar du på nedpilen bredvid Alla (listan Över högsta värden ) och anger antingen antalet poster som du vill se eller väljer ett alternativ i listan.
-
Klicka på Kör för att köra frågan och visa resultatet i databladsvyn.
-
Spara frågan och håll den öppen för användning i nästa steg.
Du kan se att den här typen av toppvärdesfråga kan besvara grundläggande frågor, till exempel vem som är den äldsta eller yngsta personen i företaget. I nästa steg förklaras hur du använder uttryck och andra villkor för att ge frågan kraft och flexibilitet. Villkoret som visas i nästa steg returnerar de tre följande födelsedagarna för anställda.
Lägg till villkor i frågan
Obs!: Dessa steg förutsätter att du kommer att använda frågan som beskrivs i föregående avsnitt.
-
Växla frågan som du skapade i föregående steg till designvyn.
-
I frågerutnätet, i kolumnen till höger om kolumnen Födelsedatum, kopierar och klistrar du in eller skriver uttrycket: Uttr1: DatumDel("m",[Födelsedatum]). Klicka sedan på Kör.
Funktionen DatumDel extraherar månadsdelen av fältet Födelsedatum.
-
Växla till designvyn.
-
Till höger om det första uttrycket klistrar du in eller skriver det här uttrycket: Uttr2: DatumDel("d",[Födelsedatum]). Klicka sedan på Kör.
I det här fallet extraherar funktionen DatumDel datumdelen i fältet Födelsedatum.
-
Växla till designvyn.
-
Avmarkera kryssrutorna på raden Visa för vart och ett av de två uttryck du just angett, klicka på raden Sortera för varje uttryck och välj sedan Stigande.
-
Klicka på Kör.
-
Du kan också ange ett villkor för att begränsa frågans omfattning. När du anger villkor sorterar frågan bara de poster som uppfyller villkoren och identifierar de översta eller lägsta fältvärdena inifrån den sorterade listan.
Växla till designvyn om du vill fortsätta med exempeldata. Skriv sedan följande uttryck på raden Villkor i kolumnen Födelsedatum :
Månad([födelsedatum]) > månad(datum()) eller månad([födelsedatum])= månad(datum()) och dag([födelsedatum])>dag(datum())
Det här uttrycket gör följande: Delen Månad([Födelsedatum]) > Månad(Datum()) kontrollerar födelsedatumet för varje anställd för att se om det infaller under en kommande månad och, om det är sant, inkluderar de posterna i frågan. Månadsdelen([Födelsedatum])= Månad(Datum()) Och Dag([Födelsedatum])>Dag(Datum()) kontrollerar födelsedatumen som inträffar under den aktuella månaden för att se om födelsedagen infaller på eller efter den aktuella dagen. Om villkoret är sant inkluderar funktionen dessa poster i frågan. Sammanfattning: Det här uttrycket ignorerar alla poster där födelsedagen infaller mellan den 1 januari och det datum då du kör frågan.
Fler exempel på frågevillkorsuttryck finns i artikeln Exempel på frågevillkor.
-
På fliken Frågedesign i gruppen Frågekonfiguration klickar du på nedpilen bredvid Alla (listan Över högsta värden ) och anger antingen antalet poster som du vill se eller väljer ett alternativ i listan.
Om du vill se de följande tre födelsedagarna skriver du 3.
-
Klicka på Kör för att köra frågan och visa resultatet i databladsvyn.
Om du ser fler poster än du anger
Om dina data innehåller flera poster som delar ett datumvärde kan frågan med de högsta värdena returnera mer data än du anger. Du kan till exempel utforma en fråga med toppvärden för att hämta tre poster för anställda, men frågan returnerar fyra poster eftersom "Wilson" och "Edwards" delar en födelsedag, som visas i följande tabell.
LastName |
Födelsedatum |
---|---|
Berka |
9/26/1968 |
Jackson |
10/2/1970 |
Edwards |
10/15/1965 |
Wilson |
10/15/1969 |
Om du ser färre poster än du anger
Anta att du utformar en fråga för att returnera de fem översta eller lägsta posterna i ett fält, men frågan returnerar bara tre poster. Som regel löser du den typen av problem genom att öppna frågan i designvyn och granska raden Villkor för kolumnerna i designrutnätet.
Mer information om villkor finns i artikeln Exempel på frågevillkor.
Om du ser dubblettposter
Om en fråga med toppvärden returnerar dubbletter innehåller antingen de underliggande tabellerna dubblettposter eller så ser posterna ut att vara dubbletter eftersom frågan inte innehåller de fält som kan skilja mellan posterna. I följande tabell visas till exempel resultatet av en fråga som returnerar de fem order som levererades senast, tillsammans med namnet på den säljare som hanterade transaktionen.
Leveransdatum |
Säljare |
---|---|
11/12/2004 |
Freitag |
11/12/2004 |
Cajhen |
10/12/2004 |
Delgado |
10/12/2004 |
Delgado |
10/12/2004 |
Freitag |
Den tredje och fjärde posterna verkar vara dubbletter, men det är möjligt att försäljaren Delgado hanterade två olika order som levererades samma dag.
Beroende på dina krav kan du göra en av två saker för att undvika att returnera dubblettposter. Du kan ändra utformningen av frågan för att lägga till fält som hjälper till att skilja posterna åt, till exempel fälten OrderID och CustomerID. Om det räcker att bara se en av dubblettposterna kan du bara visa distinkta poster genom att ange frågans unika värdeegenskap till Ja. Om du vill ange den här egenskapen högerklickar du var som helst i det tomma området i den övre halvan av frågedesignern i frågedesignvyn och klickar sedan på Egenskaper på snabbmenyn. Leta reda på egenskapen Unika värden på egenskapssidan för frågan och ställ in den på Ja.
Mer information om hur du hanterar dubblettposter finns i artikeln Söka efter dubblettposter med en fråga.
Hitta de senaste eller tidigaste datumen för poster i kategorier eller grupper
Du använder en summafråga för att hitta de tidigaste eller senaste datumen för poster som finns i grupper eller kategorier. En summafråga är en urvalsfråga som använder mängdfunktioner som Min, Max, Summa, Första och Sista för att beräkna värden för ett visst fält.
Stegen i det här avsnittet förutsätter att du driver en event management-verksamhet – du tar hand om mellanlagring, belysning, catering och andra aspekter av stora funktioner. Dessutom finns de evenemang som du hanterar i flera kategorier, till exempel produktlanseringar, gatumässor och konserter. I stegen i det här avsnittet förklaras hur du besvarar en vanlig fråga: När är nästa händelse, efter kategori? Med andra ord, när är nästa produktlansering, nästa konsert och så vidare.
Kom ihåg följande när du fortsätter: Som standard kan den typ av summafråga som du skapar här bara innehålla fältet som innehåller grupp- eller kategoridata och fältet som innehåller dina datum. Du kan inte ta med andra fält som beskriver objekten i en kategori, till exempel kund- eller leverantörsnamn. Du kan dock skapa en andra fråga som kombinerar summafrågan med fält som innehåller beskrivande data. I stegen längre fram i det här avsnittet förklaras hur du gör den uppgiften.
Stegen i det här avsnittet förutsätter att följande tre tabeller används:
Tabellen Händelsetyp
TypeID |
Händelsetyp |
---|---|
1 |
Produktlansering |
2 |
Funktionen Företag |
3 |
Funktionen Privat |
4 |
Fund Raiser |
5 |
Mässa |
6 |
Föreläsning |
7 |
Konsert |
8 |
Utställning |
9 |
Gatumässa |
Tabellen Kunder
Kund-ID |
Företag |
Kontaktperson |
---|---|---|
1 |
Contoso, Ltd. Grafik |
Jonathan Haas |
2 |
Tailspin Toys |
Ellen Adams |
3 |
Fabrikam |
Carol Philips |
4 |
Wingtip Toys |
Lucio Iallo |
5 |
A. Datum |
Mandar Samant |
6 |
Adventure Works |
Brian Burke |
7 |
Designinstitut |
Jaka Stele |
8 |
Konsthögskolan |
Milena Duomanova |
Tabellen Händelser
Händelse-ID |
Händelsetyp |
Kund |
Händelsedatum |
Pris |
---|---|---|---|---|
1 |
Produktlansering |
Contoso, Ltd. |
4/14/2003 |
10 000 kr |
2 |
Funktionen Företag |
Tailspin Toys |
4/21/2003 |
8 000 kr |
3 |
Mässa |
Tailspin Toys |
5/1/2003 |
$25,000 |
4 |
Utställning |
Graphic Design Institute |
5/13/2003 |
4 500 kr |
5 |
Mässa |
Contoso, Ltd. |
5/14/2003 |
$55,000 |
6 |
Konsert |
Konsthögskolan |
5/23/2003 |
12 000 kr |
7 |
Produktlansering |
A. Datum |
6/1/2003 |
15 000 kr |
8 |
Produktlansering |
Wingtip Toys |
6/18/2003 |
21 000 kr |
9 |
Fund Raiser |
Adventure Works |
6/22/2003 |
$1 300 |
10 |
Föreläsning |
Graphic Design Institute |
6/25/2003 |
$2 450 |
11 |
Föreläsning |
Contoso, Ltd. |
7/4/2003 |
$3 800 |
1,2 |
Gatumässa |
Graphic Design Institute |
7/4/2003 |
5 500 kr |
Obs!: Anvisningarna i det här avsnittet förutsätter att tabellerna Kunder och Händelsetyp finns på 1-sidan av 1:N-relationer med tabellen Händelser. I det här fallet delar tabellen Händelser fälten CustomerID och TypeID. Summorna för frågor som beskrivs i nästa avsnitt fungerar inte utan dessa relationer.
Hur gör jag för att lägga till dessa data i en databas?
Om du vill lägga till dessa exempeltabeller i en databas kan du kopiera data till Excel och sedan importera data, men med några undantag:
-
När du kopierar tabellerna Händelsetyper och Kunder till Excel ska du inte kopiera kolumnerna TypeID och CustomerID. Access lägger till primärnyckelvärden när du importerar kalkylbladen. vilket sparar lite tid.
-
När du har importerat tabellerna måste du öppna tabellen Händelser i designvyn och konvertera kolumnerna Händelsetyp och Kund till uppslagsfält. Det gör du genom att klicka på kolumnen Datatyp för varje fält och sedan klicka på Uppslagsguiden.
När du skapar uppslagsfälten ersätter Access textvärdena i kolumnerna Händelsetyp och Kund med numeriska värden från källtabellerna.
Mer information om hur du skapar och använder uppslagsfält finns i artiklarna Skapa eller ta bort ett flervärdesfält. I den artikeln förklaras hur du skapar en typ av uppslagsfält där du kan välja flera värden för ett visst fält och förklarar också hur du skapar uppslagslistor.
Skapa summafrågan
-
Klicka på Frågedesign i gruppen Frågor på fliken Skapa.
-
Dubbelklicka på de tabeller som du vill använda. Varje tabell visas i den övre delen av frågedesignern.
Om du använder exempeltabellerna ovan lägger du till tabellerna Händelser och Händelsetyper.
-
Dubbelklicka på de tabellfält du vill använda i frågan. Se till att du bara lägger till grupp- eller kategorifälten och värdefältet i frågan i det här läget.
Om du använder exempeldata som visas i de tre föregående tabellerna lägger du till antingen fältet Händelsetyp från tabellen Händelsetyp eller fältet Händelsedatum från tabellen Händelser.
-
Alternativt kan du ange ett villkor som begränsar frågans omfattning. Endast poster som uppfyller villkoren sorteras och de högsta och lägsta fältvärdena identifieras i den här sorterade listan.
Om du till exempel vill returnera händelser i kategorin Privat funktion skriver du uttrycket på raden Villkor i kolumnen Händelsetyp : <>"Privat funktion".
Fler exempel på frågevillkorsuttryck finns i artikeln Exempel på frågevillkor.
-
Konvertera frågan till en summafråga genom att göra följande:
Klicka på Summor i gruppen Visa/dölj på fliken Frågedesign.
Raden Summor visas i designrutnätet.
-
Kontrollera att raden Summor för varje grupp eller kategorifält är inställd på Gruppera efter och ange sedan raden Summor för värdefältet (fältet med de högsta eller lägsta värdena) till Max eller Min.
Max returnerar det största värdet i ett numeriskt fält och det senaste datum- eller tidsvärdet i ett datum/tid-fält. Min returnerar det minsta värdet i ett numeriskt fält och det tidigaste datum- eller tidsvärdet i ett datum/tid-fält.
-
På fliken Frågedesign i gruppen Frågekonfiguration klickar du på nedpilen bredvid Alla (listan Över högsta värden ) och anger antingen antalet poster som du vill se eller väljer ett alternativ i listan.
I det här fallet markerar du Alla och klickar sedan på Kör för att visa resultatet i databladsvyn.
Obs!: Beroende på vilken funktion du valde i steg 6 ändrar Access namnet på värdefältet i frågan till MaxOfFieldName eller MinOfFieldName. Om du använder exempeltabellerna byter Access namn på fältet MaxOfEvent-datum eller MinOfEvent-datum.
-
Spara frågan och gå till nästa steg.
Frågeresultatet visar inte produktnamn eller annan information om produkterna. Om du vill se ytterligare data måste du skapa en andra fråga som innehåller frågan som du just skapade. I nästa steg förklaras hur du gör detta.
Skapa en andra fråga för att lägga till mer data
-
Klicka på Frågedesign i gruppen Frågor på fliken Skapa.
-
Klicka på fliken Frågor och dubbelklicka sedan på summafrågan som du skapade i föregående avsnitt.
-
Klicka på fliken Tabeller och lägg till tabellerna som du använde i summafrågan, och lägg även till tabeller som innehåller andra relaterade data. Om du använder de tre föregående exempeltabellerna lägger du till tabellerna Händelsetyp, Händelse och Kunder i den nya frågan.
-
Koppla fälten i summafrågan till motsvarande fält i de överordnade tabellerna. Det gör du genom att dra varje fält i summafrågan till motsvarande fält i tabellen.
Om du använder exempeldata från de tre tabellerna drar du kolumnen Händelsetyp i summafrågan till fältet Händelsetyp i tabellen Händelsetyp. Sedan drar du kolumnen MaxOfEvent-datum i summafrågan till fältet Händelsedatum i tabellen Händelser. Genom att skapa dessa kopplingar kan den nya urvalsfrågan sammanföra data i summafrågan och data i de andra tabellerna.
-
Lägg till ytterligare beskrivande fält från de andra tabellerna i frågan.
Om du använder exempeldata från de tre tabellerna kan du lägga till fälten Företag och Kontakt från tabellen Kunder.
-
Alternativt kan du ange en sorteringsordning för en eller flera kolumner. Om du till exempel vill visa kategorierna i alfabetisk ordning anger du raden Sortera i kolumnen Händelsetyp till Stigande.
-
Klicka på Kör i gruppen Resultat på fliken Frågedesign.
Resultatet av frågan visas i databladsvyn.
Tips: Om du inte vill att rubriken i kolumnen Pris ska visas som MaxOfPrice eller MinOfPrice öppnar du frågan i designvyn och skriver Pris: MaxOfPrice eller Pris: MinOfPrice i priskolumnen i rutnätet. Pris visas som rubrik för kolumnen i databladsvyn.
Hitta de senaste och tidigaste datumen
De frågor som du skapade tidigare i den här artikeln kan returnera högsta eller lägsta värden, men inte båda. Om du vill se båda uppsättningarna med värden i en enda vy måste du skapa två frågor – en som hämtar de högsta värdena och en annan som hämtar de lägsta värdena – och sedan sammanfoga och lagra resultaten i en enda tabell.
Processen för att hitta de högsta och lägsta värdena och visa dessa data i en tabell följer de här stegen:
-
Skapa en fråga med högsta värden och bottenvärden eller, om du behöver gruppera dina data, skapa summafrågor som använder funktionerna Min och Max .
-
Täck över frågan om toppvärden (eller maxsummafrågan) till en tabellfråga och skapa en ny tabell.
-
Konvertera frågan med lägsta värden (eller minsummor) till en tilläggsfråga och lägg till posterna i tabellen med de högsta värdena.
I anvisningarna i de här avsnitten förklaras hur du gör detta.
Skapa frågorna
-
Skapa topp- och bottenvärdena.
Anvisningar för hur du skapar en fråga med de högsta eller lägsta värdena finns i Hitta det senaste eller tidigaste datumet tidigare i den här artikeln. Om du behöver gruppera dina poster efter kategori kan du läsa Hitta det senaste eller tidigaste datumet för poster i kategorier eller grupper, tidigare i den här artikeln.
Om du använder exempeltabellerna från det sista avsnittet använder du bara data i tabellen Händelser. Använd fälten Händelsetyp, Kund och Händelsedatum från tabellen Händelser i båda frågorna.
-
Spara varje fråga med ett beskrivande namn, till exempel Högsta värde och Lägsta värde, och låt dem vara öppna för användning i nästa steg.
-
Skapa tabellfrågan
-
Med frågan med de högsta värdena öppen i designvyn:
Klicka på Skapa tabell i gruppen Frågetyp på fliken Frågedesign.
Dialogrutan Tabellfråga visas.
-
I rutan Tabellnamn anger du ett namn för tabellen som lagrar de översta och lägsta posterna. Skriv till exempel Top and Bottom Records och klicka sedan på OK.
Varje gång du kör frågan skapar frågan en tabell i stället för att visa resultaten i databladsvyn och ersätter det högsta värdet med aktuella data.
-
Spara och stäng frågan.
Skapa en tilläggsfråga
-
Med den nedre värdefrågan i designvyn:
Klicka på Lägg till i gruppen Frågetyp på fliken Frågedesign.
-
Dialogrutan Tilläggsfråga visas.
-
Skriv samma namn som du angav i dialogrutan Skapa tabell .
Skriv till exempel Top and Bottom Records och klicka sedan på OK. Varje gång du kör frågan lägger frågan till posterna i tabellen Top and Bottom Records i stället för att visa resultaten i databladsvyn.
-
Spara och stäng frågan.
Köra frågorna
-
Nu kan du köra de två frågorna. Dubbelklicka på frågan med det översta värdet i navigeringsfönstret och klicka på Ja när Access uppmanar dig. Dubbelklicka sedan på frågan Lägsta värde och klicka på Ja när Access uppmanar dig.
-
Öppna tabellen Top and Bottom Records i databladsvyn.
Viktigt!: Om du försöker köra tabell- eller tilläggsfrågorna och inget verkar hända kontrollerar du följande meddelande i statusfältet i Access:
Den här åtgärden eller händelsen spärras i inaktivt läge.
Om du ser det meddelandet gör du så här:
-
Välj Aktivera det här innehållet och klicka sedan på OK.
-
Kör frågan igen.