Avatar billede al_pacone Nybegynder
27. januar 2005 - 19:41 Der er 27 kommentarer og
1 løsning

DateDiff i forspørgsel

Jeg bruger følgende til at finde Initialer, fradato, tildato og antal.

Nu kunne jeg godt tænke mig at finde antal dage imellem fradato og tildato.

Kan det også lade sig gører at dividere Datediff med antal.

Min forspørgsel ser sådan ud.

SELECT Tbl_B_Brugere.B_Initialer AS Initialer, First(Tbl_T_Tablethjul.T_Dato) AS [Fradato], Last(Tbl_T_Tablethjul.T_Dato) AS [Tildato], Count(Tbl_T_Tablethjul.B_No) AS Antal
FROM Tbl_B_Brugere INNER JOIN Tbl_T_Tablethjul ON Tbl_B_Brugere.B_No = Tbl_T_Tablethjul.B_No
GROUP BY Tbl_B_Brugere.B_Initialer
ORDER BY Count(Tbl_T_Tablethjul.B_No) DESC;
27. januar 2005 - 19:43 #1
Du finder antal dage mellem 2 datoer ved at bruge Datediff:

AntalDage: Datediff("d";[Fradato];[tildato])
27. januar 2005 - 19:44 #2
jeg er dog ikkehelt sikker på den samlede syntaks, når det er en grupperingsforespørgsel. Jeg viller derfor vælge at lave en ny forespørgsel baseret på din nuværende. Og her bruger du så datediff'en
Avatar billede al_pacone Nybegynder
27. januar 2005 - 19:51 #3
Syntax error som du nævner.

Hvordan laver jeg en ny forspørgsel baseret på min nuværende.
27. januar 2005 - 19:53 #4
Select *, Datediff("d";[Fradato];[tildato]) as AntalDage From [navn på din første forespørgsel]
Avatar billede al_pacone Nybegynder
27. januar 2005 - 20:06 #5
Man kan godt lave datediff i samme forspørgsel, man skal bare huske at bruge , i stedet for ;.

Datediff("d",[Fra dato],[Til dato]) Koreekt
Datediff("d";[Fra dato];[Til dato]) Forkert.

Det kan jo smutte det skidt. :-)
27. januar 2005 - 20:08 #6
ja, forskellen er om du skriver det i gitteret i forespørgselsgeneratoren/designeren eller om du skriver det i SQL. Mit første indlæg var beregnet på at skrive det i generatoren. Og da jeg så skulle skrive SQL'en, så kopierede jeg bare formlen fra første indlæg - sorry ;o)

Men virker det så nu, eller...?
Avatar billede al_pacone Nybegynder
27. januar 2005 - 20:18 #7
Ja det virker.

Jeg fandt selv frem til udregningen.
[AntalDage]/[Antal] AS Effektivitet
Hvordan får jeg det vist med kun 2 decimaler?
27. januar 2005 - 20:20 #8
du kan skrive således:

Format([AntalDage]/[Antal], "#.##0,00") AS Effektivitet
27. januar 2005 - 20:24 #9
ahh, den skal også "vendes" om:

Format([AntalDage]/[Antal], "#,##0.00#") AS Effektivitet
Avatar billede al_pacone Nybegynder
27. januar 2005 - 20:25 #10
Hedder formatet ikke bare #.## hvis jeg skriver det som dit forslag får jeg 5 decimaler?.
27. januar 2005 - 20:26 #11
fik du min sidste rettelse med?


Du kan nøjes med "0.00", men så får du ikke tusindtalsseperator med
Avatar billede al_pacone Nybegynder
27. januar 2005 - 20:37 #12
Ja det fungerer fint.
Jeg har bare lidt problemer med at sorterer på effektivitet.
Hvis jeg sætter sortering til, så spørger den efter Antal og AntalDage.
27. januar 2005 - 20:40 #13
du skal vel skrive:

Order By Format([AntalDage]/[Antal], "#,##0.00#")
Avatar billede al_pacone Nybegynder
27. januar 2005 - 20:48 #14
Beklager men det virker altså ikke.

Hvis jeg laver en ny forspørgsel, og sorterer på effektivitet, så sorterer den kun efter første ciffer.

Eksempel.
1
12
22
3
34
27. januar 2005 - 21:01 #15
hmm, nu ved jeg ikke hvad du skal bruge udtrækket til?
Problemet er, når du bruger Format på denne måde, så konverteres til tekst-format.

Skal du bruge det til en formular eller rapport? Fordi så kan du undlade at formatterer i forespørgslen og i stedet gøre det direkte på feltet i formularen/rapporten.

Men det afhænger af hvad du skal bruge den til...
Avatar billede al_pacone Nybegynder
27. januar 2005 - 21:05 #16
Det skal vises i en Liste.
Avatar billede al_pacone Nybegynder
27. januar 2005 - 21:07 #17
Liste = List Box
27. januar 2005 - 21:08 #18
okay, så ville jeg nok flytte formatteringen til den nye forespørgsel, således at du kan sorterer på effektivitet, men vises den formatteret effektivitet.
Kan du følge mig?
Avatar billede al_pacone Nybegynder
27. januar 2005 - 21:22 #19
Nej ikke helt.
Du bliver nok nødt til at skære det ud i pap :-)
27. januar 2005 - 21:27 #20
okay :o)

Du har din første forespørgsel, hvor du har:
[AntalDage]/[Antal] AS Effektivitet

I den næste forespørgsel (den som du bruger på din listboks), skriver du således:

Select Format(Effektivitet, "#,##0.00#") As VistEffektivitet, * From [Din første forespørgsel] Order By Effektivitet
27. januar 2005 - 21:30 #21
Du har lukket! Fik du løst det?
Super :o)

Og tak for point :o)
Avatar billede al_pacone Nybegynder
27. januar 2005 - 21:43 #22
Kan det hele være fordi at jeg bruger Group BY.
Når jeg afprøver dit seneste forslag for jeg følgende fejl.

Cannot group on fields selected with '*'.

Hvad skulle forskellen være, om jeg laver sorteringen i den første, eller i den anden forspørgsel?.
Avatar billede al_pacone Nybegynder
27. januar 2005 - 21:46 #23
Nej jeg har ikke løst det. Jeg tænkte 60 point dækker kun de første 20 kommentarer, resten håber jeg at få af ren barmhjertighed.

Spøg til side. Sortering var ikke med i mit oprindelige spørgsmål.
27. januar 2005 - 21:48 #24
tak - og bare rolig; jeg er den "barmhjertige samaritaner" :o)

Du skal lave sorteringen i den sidste forespørgsel. Men KUN Group By i den første.

Forskellen er, at når Access går i gang med at fortolke den anden forespørgsel, så har den foretaget grupperingen og kan derved "genkende" feltet Effektivitet.
Bed mig ikke om at gå mere i detaljer ;o)
Avatar billede al_pacone Nybegynder
27. januar 2005 - 22:05 #25
Så tændte lyset.
Var det ikke andet. Kunne du ikke bare have skrevet det til at starte med :-)

Tak for hjælpen, det endte med at være lidt mere langhåret end jeg havde regnet med.
27. januar 2005 - 22:07 #26
Jeg overvejede at skrive det i starten....men hvad skulle jeg så have lavet de sidste 2½ time :o)
Avatar billede al_pacone Nybegynder
27. januar 2005 - 22:19 #27
Man skal jo ha sin aften til at gå med et eller andet.
27. januar 2005 - 22:20 #28
præcis :o)
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