31. januar 2006 - 15:58Der er
11 kommentarer og 1 løsning
Finde den sidste produktion
Jeg har en tabel(MPSKART) med en række produktionen af forskellige varenumre. For hver produktion har jeg en færdigdato. Hvordan opretter jeg en forespørgsel, der for hvert varenummer returnerer mig den produktion med den højeste færdigdato?
Det er formentlig en SQL-forespørgsel, der skal oprettes. Hvis den skal sættes ind i et kriteriefelt, hvilket felt skal den så indsættes i? mvh Aksma
Hej Prøv at oprette en ny forspørgsel vha. at benytte guiden simpel forspørgsel, medtag felterne Færdigdato, og Varenummer. I design på forspørgsel skal du klikke på ikonet Totaler. I feltet Færdigdato er du nogle muligerheder for at vælge diverse grupperinger, prøv at vælge Maks i udtrykket Total. Dette vil vise alle varenumre hvor dato altid er den højeste ifht. til dagsdato.
Jeg ikke lige om det er det du er ude efter, men prøv at kikke på det :o). I SQL ville det se sådan ud:
SELECT Tabel2.VareNr, Max(Tabel2.Fdato) AS MaksOfFdato FROM Tabel2 GROUP BY Tabel2.VareNr;
Hej! Den metode er jeg med på. Problemet er blot, at det ikke giver mig den sidste produktion. Nummeeret på den sidste produktion skal jeg bruge for at kunne finde blandt andet oplysninger om omkostningerne på den sidste produktion. Hvis jeg også f.eks. sætter maks eller sidste ind på produktion i den akkumulerede tabel får jeg ikke entydig den samme produktion, som har den sidste afslutningsdato.
Jeg havde i forvejen fundet lidt hjælp til det her på hjemmesiden og har fået kreeret en forespørgsel med følgende SQL: (SELECT Max([fxrdigdato]) FROM mpskart WHERE [produktion]=Tab.produktion GROUP BY MPSKART.VARENUMMER;)
Problemet ligger i, at forespørgslen ikke vil acceptere Group BY........
Hvis jeg fjerner dette kan forespørgslen køre, men den giver mig kun de produktioner, der er afsluttet på tabellens sidste dato for alle varenumre under et. Den skulle give mig den sidste produktion pr. varenummer. Kan du se, hvor fejlen ligger? Aksma
Der er sådan set ikke tale om en fejl, da en Group BY ikke kan genereres på mange felter i forspørgsel ifht. dit behov. Jeg tror at en rapport ville kunne klare det, har du prøvet det
MPSkart-tabel (do. nuværende) ============= produktionsnr: autonr varenr: tekst færdigdato: kort dato
MPSkartSorteret - forspørgsel (sortering af poster i MPSkart) ============================= m/MPSkart-tabel-felterne sorter stigende på varenr sorter faldende på færdigdato
MPSkartFærdigdato - tabel (heri opbygges en post pr. varenr med nyeste færdigdato) ========================= identisk design som MPSkart- dog produktionr: lang heltal
Formular (ubundet) med 1 knap - hændelse v/klik ================================================ VBA-kode:
Option Compare Database Dim db, MPSkartSort, MPSkartFærdigdato Private Sub Kommandoknap0_Click() houseKeeping
selectSidsteFærdigdato
MPSkartSort.Close MPSkartFærdigdato.Close db.Close End Sub Private Sub houseKeeping() Set db = CurrentDb Set MPSkartSort = db.OpenRecordset("MPSkartSorteret") Set MPSkartFærdigdato = db.OpenRecordset("MPSkartFærdigdato")
sletFærdigdato End Sub Private Sub sletFærdigdato() Dim f For f = 1 To MPSkartFærdigdato.RecordCount With MPSkartFærdigdato .Delete .MoveNext End With Next f End Sub Private Sub selectSidsteFærdigdato() Dim f, varenr varenr = ""
For f = 1 To MPSkartSort.RecordCount With MPSkartSort If varenr = "" Then varenr = .Fields("varenr") bygFærdigdato MPSkartSort Else If varenr <> .Fields("varenr") Then bygFærdigdato MPSkartSort varenr = .Fields("varenr") End If End If .MoveNext End With Next f End Sub Private Sub bygFærdigdato(rec) With MPSkartFærdigdato .AddNew .Fields("produktionsnr") = rec.Fields("produktionsnr") .Fields("varenr") = rec.Fields("varenr") .Fields("færdigdato") = rec.Fields("færdigdato") .Update End With End Sub
Solution: Make a query (qryLatestItemDates) SELECT MP.Item, Max(MP.Finishdate) AS Finished FROM MPSKART AS MP GROUP BY MP.Item;
Then another SELECT qryLatestItemDates.Item, qryLatestItemDates.Finished, MPSKART.Produktion FROM MPSKART INNER JOIN qryLatestItemDates ON (MPSKART.Finishdate = qryLatestItemDates.Finished) AND (MPSKART.Item = qryLatestItemDates.Item) ORDER BY qryLatestItemDates.Item;
Jeg har forsøgt med din løsning, men den kommer med en fejl "Duplicate option Statement". Terry er kommet med en løsning, der fungerer, så jeg giver ham pointene. Jeg synes, det er fantastisk, at du har lavet så stort et arbejde for at hjælpe mig. Det skal du have en stor tak for.
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.