07. marts 2010 - 13:05Der er
9 kommentarer og 1 løsning
Vis nyeste række
Jeg har en forespørgsel, hvor jeg ønsker at begrænse visningen til kun at vise nyeste data. Forespørgslen henter bl.a. data fra tblService, der indeholder et datofelt. Det kan registreres data, der er identiske bortset fra datofeltet.
Jeg ønsker med forespørgslen kun at vise nyeste data for de poster, hvor de øvrige felter er identiske, men vi også vise andre poster, hvor øvrige felter er forekellige - det kan også forekomme, at datofeltet ikke er udfyldt. Det er så i de tilfælde, hvor der ikke endnu er registreret i tblService.
Forespøgslen kommer her i SQL: SELECT tblAnlaeg.Kunde, tblAnlaeg.Anlaeg_ID, tblKunde.Navn, tblAnlaegstype.Anlaegstype_ID, tblAnlaegstype.Anlaeg, tblKontaktperson.Fornavn, tblKontaktperson.Efternavn, tblAnlaeg.Serviceinterval, tblAnlaeg.Adresse, tblAnlaeg.Adresse2, tblService.Dato, tblAnlaeg.Postnummer, tblPostnr.Bynavn, tblAnlaeg.Service_grundtid, tblAnlaeg.Transporttid, tblAnlaeg.Type FROM ((tblPostnr RIGHT JOIN ((tblAnlaegstype RIGHT JOIN tblAnlaeg ON tblAnlaegstype.Anlaegstype_ID = tblAnlaeg.Type) LEFT JOIN tblKunde ON tblAnlaeg.Kunde = tblKunde.Kunde_Id) ON tblPostnr.Postnr = tblAnlaeg.Postnummer) LEFT JOIN tblKontaktperson ON tblAnlaeg.Kontaktperson = tblKontaktperson.Kontaktperson_ID) LEFT JOIN tblService ON tblAnlaeg.Anlaeg_ID = tblService.Anlaeg_ID WHERE (((tblAnlaeg.Kunde) Like IIf([Forms]![frmMain]![cboService_Kunde]=0,"*",[Forms]![frmMain]![cboService_Kunde])) AND ((tblAnlaeg.Type) Like IIf([Forms]![frmMain]![cboService_Type]=0,"*",[Forms]![frmMain]![cboService_Type]))) ORDER BY tblAnlaeg.Kunde, tblService.Dato DESC;
SELECT TOP 1 tblAnlaeg.Kunde, tblAnlaeg.Anlaeg_ID, tblKunde.Navn, tblAnlaegstype.Anlaegstype_ID, tblAnlaegstype.Anlaeg, tblKontaktperson.Fornavn, tblKontaktperson.Efternavn, tblAnlaeg.Serviceinterval, tblAnlaeg.Adresse, tblAnlaeg.Adresse2, tblService.Dato, tblAnlaeg.Postnummer, tblPostnr.Bynavn, tblAnlaeg.Service_grundtid, tblAnlaeg.Transporttid, tblAnlaeg.Type FROM ((tblPostnr RIGHT JOIN ((tblAnlaegstype RIGHT JOIN tblAnlaeg ON tblAnlaegstype.Anlaegstype_ID = tblAnlaeg.Type) LEFT JOIN tblKunde ON tblAnlaeg.Kunde = tblKunde.Kunde_Id) ON tblPostnr.Postnr = tblAnlaeg.Postnummer) LEFT JOIN tblKontaktperson ON tblAnlaeg.Kontaktperson = tblKontaktperson.Kontaktperson_ID) LEFT JOIN tblService ON tblAnlaeg.Anlaeg_ID = tblService.Anlaeg_ID WHERE (((tblAnlaeg.Kunde) Like IIf([Forms]![frmMain]![cboService_Kunde]=0,"*",[Forms]![frmMain]![cboService_Kunde])) AND ((tblAnlaeg.Type) Like IIf([Forms]![frmMain]![cboService_Type]=0,"*",[Forms]![frmMain]![cboService_Type]))) ORDER BY tblAnlaeg.Kunde, tblService.Dato DESC;
Havent lookl closely at your SQL but to read only the newest record you can use TOP 1 but it will only return 1 record if the Dato field also contains a time value. If its only a date then all records with that date will be selected.
Where selectionen medfører, at jeg godt nok kun får posten med nyeste dato, men jeg får ikke vist andre poster, hvor der ikke er anført dato.
Forespørgslen viser alle anlæg med udgangspunkt i tblAnlaeg, hvortil der er så er koblet info, fra andre tabeller - lidt svært at forklare - du kan evt. få kopi at databasen???
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.