Avatar billede mpd Nybegynder
07. marts 2010 - 13:05 Der 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;
Avatar billede terry Ekspert
07. marts 2010 - 13:14 #1
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;
Avatar billede terry Ekspert
07. marts 2010 - 13:15 #2
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.
Avatar billede terry Ekspert
07. marts 2010 - 13:20 #3
Actually after reading the question and looking at the SQL I dont think TOP 1 will give you what you want.
Avatar billede terry Ekspert
07. marts 2010 - 13:23 #4
In your WHERE I think you need to inlcude a critera for
tblService.Dato

WHERE .... AND tblService.Dato = (SELECT Max(Dato)FROM tblService)



NOT tested.
Avatar billede mpd Nybegynder
07. marts 2010 - 15:29 #5
Hi Terry

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???
Avatar billede terry Ekspert
07. marts 2010 - 15:32 #6
"men jeg får ikke vist andre poster, hvor der ikke er anført dato"

If there isnt a date then how do you know how old the records are?

ekspertenATsanthell.dk

AT = @
Avatar billede terry Ekspert
07. marts 2010 - 15:35 #7
If there is no date then you could test for Null

WHERE .... AND tblService.Dato = (SELECT Max(Dato)FROM tblService)OR (tblService.Dato Is Null)
Avatar billede mpd Nybegynder
07. marts 2010 - 16:27 #8
Hej Terry

Din sidste kommentar var lige som det skulle være.

Send svar for point!
Avatar billede terry Ekspert
07. marts 2010 - 17:07 #9
No need to look at the dB then :o)
Avatar billede terry Ekspert
07. marts 2010 - 17:55 #10
Thanks
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview
Kategori
Dyk ned i databasernes verden på et af vores praksisnære Access-kurser

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester