Avatar billede puppetmaster Nybegynder
16. januar 2004 - 10:17 Der er 13 kommentarer og
1 løsning

Problemer med en forespørgsel

Jeg har en tabel med følgende felter:

Dato
Varenr
Varebetegnelse
Temperatur

Jeg skal bruge en forespørgsel der henter poster mellem 2 datoer, f.eks. 05-01-2004 og 09-01-2004, men samtidig skal data for temperatur vises som min, max og gennemsnit, for de enkelte varenumre.

Eksempel på data:
Dato        Varenr    varebetegnelse    Temperatur
05-01-2004    1322        Vare1              11,9
05-01-2004    1322        Vare1              12,2
06-01-2004    1322        Vare1              11,3
06-01-2004    1322        Vare1              14,2
07-01-2004    1323        Vare2              11,2

Ovenstående skal vises som:
Varenr    varebetegnelse    TempMin  TempGns  TempMax
1322          Vare1          11,3      12,4      14,2
1323          Vare2          11,2      11,2      11,2
Avatar billede mufoxe Nybegynder
16. januar 2004 - 10:32 #1
SELECT
  Dato, VareNr, AVG(Temperatur) AS TempGns, MIN(Temperatur) AS TempMin, MAX(Temperatur) AS TempMax
FROM
  MyTable
GROUP BY
  Dato, VareNr
Avatar billede overchord Nybegynder
16. januar 2004 - 10:53 #2
mufoxe mangler lige ar reducere datoerne, men ellers er den der:

[efter Mytable] WHERE Dato > 05-01-2004 AND Dato < 09-01-2004 GROUP BY.....
Avatar billede mufoxe Nybegynder
16. januar 2004 - 10:54 #3
Ups :)
Avatar billede puppetmaster Nybegynder
16. januar 2004 - 13:15 #4
Hmmm....ikke helt, mufoxe og overchord. Denne kode virker (næsten!):

SELECT VareNr, Min([Temperatur]) AS [MinOfTemperatur], Max([Temperatur]) AS [MaksOfTemperatur], Avg([Temperatur]) AS [GennemsnitOfTemperatur]
FROM
WHERE (((.Dato)>#1/4/2004# And (.Dato)<#1/10/2004#))
GROUP BY VareNr;

Der er dog kun det problem at jeg så ikke får vist Datoen i resultatet! :(
Avatar billede mufoxe Nybegynder
16. januar 2004 - 13:24 #5
Det er jo fordi du har fjernet den fra SELECT listen. Hvis du kigger på mit første eksempel, kan du se at Dato kolonnen er listet som den færste.

SELECT Dato, VareNr, Min([Temperatur]) AS [MinOfTemperatur], Max([Temperatur]) AS [MaksOfTemperatur], Avg([Temperatur]) AS [GennemsnitOfTemperatur]
FROM
WHERE (((.Dato)>#1/4/2004# And (.Dato)<#1/10/2004#))
GROUP BY VareNr, Dato;
Avatar billede puppetmaster Nybegynder
16. januar 2004 - 13:35 #6
Ja, det er jeg klar over, men når jeg tilføjede den, fik jeg besked om at "Du har forsøgt at køre en forespørgsel der ikke medtager det angivne udtryk "Dato" som en del af en aggregatfunktion"!
Avatar billede puppetmaster Nybegynder
16. januar 2004 - 13:36 #7
Når jeg så i design-visning ændrer Total for feltet Dato til Hvor (hvor det før var Grupper efter), så vises Datoen jo ikke.
Avatar billede mufoxe Nybegynder
16. januar 2004 - 13:38 #8
Bemærk at Dato skal være med i GROUP BY.
Avatar billede puppetmaster Nybegynder
16. januar 2004 - 14:58 #9
Problemet er nu, at datointervalget IKKE skal sættes på forespørgslen, men kommer fra en formular, som laver en filtertekst tekststreng. Med mindre jeg har skrevet datointervalget i forespørgslen, så vil jeg få en parameter-popup boks, som spørger efter en dato! :(
Avatar billede mufoxe Nybegynder
16. januar 2004 - 15:26 #10
Jamen dog. Så skal du jo bare have smidt din variabel ind i udtrykket i Dato > VariabelFraDialog AND Dato < VariabelFraDialog.

Det har ikke noget med GROUP BY og SELECT listen at gøre. Jeg kan ikke komme nærmere end det, idet jeg ikke aner noget som helst om Access og formularer.
Avatar billede puppetmaster Nybegynder
16. januar 2004 - 15:37 #11
Lidt a la:
FilterTekst = FilterTekst & "([dato] between #" & Format([fra], "mm-dd-yy") & "# and #" & Format([til], "mm-dd-yy") & "#)"

Det virker desværre bare ikke.
Avatar billede puppetmaster Nybegynder
20. januar 2004 - 08:55 #12
Jeg er nået fremtil at skulle kalde min forespørgsel med en parameter.
Parameter:
filtertekst = filtertekst & "([Dato] Between #" & Format([fra], "mm-dd-yy") & "# and #" & Format([til], "mm-dd-yy") & "#)"

Kald til forespørgsel:
DoCmd.OpenReport ReportName, acViewPreview, , filtertekst

Dette resulterer dog i en tom rapport.
Avatar billede puppetmaster Nybegynder
20. januar 2004 - 09:14 #13
Uanset hvad jeg gør bliver jeg mødt med en parameter indtastningsboks.
Avatar billede puppetmaster Nybegynder
20. januar 2004 - 09:59 #14
Værdien af det felt som forespørgslen skal køres efter er:
([dato] between #01-05-04# and #01-05-04#)
men så spørger den om "indtast parameter" (for feltet "dato")
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