27. marts 2003 - 08:19Der er
45 kommentarer og 1 løsning
Søge på dato og klokkeslet mellem 15:00 og 07:00
Hej
Jeg har et problem med at søge på både dato og klokke, jeg vil gerne kunne søge på dato mellem fks. 01-03-2003 og 25-03-2003 men jeg skal kun bruge de poster der ligger i tidsrummet fra 15:00 til 07:00 og det er her mit problem er, jeg kan godt finde dem der er indefor datoen men jeg ved ikke hvordan jeg får klokken med. håber der er nogen der kan hjælpe meg med dette.
sonos Det jeg har foreslået svarer til at du i forespørgselsdesign vinduet blot angiver dine dato-kriterier i kriterie-feltet under dato. Ved siden af opretter du et nyt felt, hvor du skriver
DatePart("h",[Dato])
I nogen DK-versioner skal du skrive "t" i stedet for "h". Under dette nye felt skriver du så kriterierne for tidspunkt dvs.
SELECT tbl1.* FROM tbl1 WHERE (((CDate(Format([DateAndTime],"short date"))) Between #01/03/2003# And #25/03/2003#) AND NOT((CDate(Format([DateAndTime],"long time"))) Between #07:00:00# And #15:00:00#));
You may need to alter that a bit WHERE (((CDate(Format([DateAndTime],"short date"))) Between #03/01/2003# And #03/25/2003#) AND NOT((CDate(Format([DateAndTime],"long time"))) Between #07:00:00# And #15:00:00#));
Det ser meget godt ud alt sammen, men hvor skal jeg skrive jeres foreslag ind, er det i forespørgselsfeltet kriterie eller hvor?? for hvis jeg skriver det ind der virker det ikke
Opret en ny query (i designvisning). Lad være med at tilføje nogen tabellen. Når du så står i designvinduet vælger du menuen Vis/SQL-visning. Så er du faktisk i forespørgslens SQL editor (du kan også vælge det med en af dine eksisterende forespørgsler, så kan du se hvordan det ser ud). Så kopierer du faktisk blot thomasjepsens forslag ind her og prøver at køre forespørgslen.
Den metode kan du i hvert tilfælde bruge på Terrys og mine forslag. Du skal lige huske at rette tabelnavne og feltnavne, så de stemmer overens med dine.
OK Her er den, for mig se det meget uoverskueligt ud!!!!
SELECT FRFDV_DV_FRAPSIKR.PRODENH_KODE, FRFDV_DV_FRAPSIKR.FEJLKODE_NR_ANL, FRFDV_DV_FRAPSIKR.FEJLKODE_BESKR_ANL FROM Fejlårsag RIGHT JOIN (Fejlsted RIGHT JOIN (Anlægsdel RIGHT JOIN (Anlæg RIGHT JOIN ([Bane nr 2] RIGHT JOIN ([VISIT-CAS_DRIFTSRAP] LEFT JOIN ([Bane nr] RIGHT JOIN (FRF_DV_FRAPANMELD LEFT JOIN FRFDV_DV_FRAPSIKR ON FRF_DV_FRAPANMELD.ID = FRFDV_DV_FRAPSIKR.FRAPANMELD_ID) ON [Bane nr].[Btr nr] = FRF_DV_FRAPANMELD.BTRSTR_ID) ON [VISIT-CAS_DRIFTSRAP].ID = FRF_DV_FRAPANMELD.DRAP_ID) ON [Bane nr 2].[Tib strk] = [Bane nr].[Bane nr]) ON Anlæg.Tal = FRFDV_DV_FRAPSIKR.FEJLKODE_NR_ANL) ON Anlægsdel.Tal = FRFDV_DV_FRAPSIKR.FEJLKODE_NR_ANLDEL) ON Fejlsted.Tal = FRFDV_DV_FRAPSIKR.FEJLKODE_NR_FEJLSTED) ON Fejlårsag.Tal = FRFDV_DV_FRAPSIKR.FEJLKODE_NR_ARS GROUP BY FRFDV_DV_FRAPSIKR.PRODENH_KODE, FRFDV_DV_FRAPSIKR.FEJLKODE_NR_ANL, FRFDV_DV_FRAPSIKR.FEJLKODE_BESKR_ANL HAVING (((FRFDV_DV_FRAPSIKR.PRODENH_KODE) Not Like "ISTR"));
SELECT FRFDV_DV_FRAPSIKR.PRODENH_KODE, FRFDV_DV_FRAPSIKR.FEJLKODE_NR_ANL, FRFDV_DV_FRAPSIKR.FEJLKODE_BESKR_ANL, FRF_DV_FRAPANMELD.FEJL_INDTRADT FROM Fejlårsag RIGHT JOIN (Fejlsted RIGHT JOIN (Anlægsdel RIGHT JOIN (Anlæg RIGHT JOIN ([Bane nr 2] RIGHT JOIN ([VISIT-CAS_DRIFTSRAP] LEFT JOIN ([Bane nr] RIGHT JOIN (FRF_DV_FRAPANMELD LEFT JOIN FRFDV_DV_FRAPSIKR ON FRF_DV_FRAPANMELD.ID = FRFDV_DV_FRAPSIKR.FRAPANMELD_ID) ON [Bane nr].[Btr nr] = FRF_DV_FRAPANMELD.BTRSTR_ID) ON [VISIT-CAS_DRIFTSRAP].ID = FRF_DV_FRAPANMELD.DRAP_ID) ON [Bane nr 2].[Tib strk] = [Bane nr].[Bane nr]) ON Anlæg.Tal = FRFDV_DV_FRAPSIKR.FEJLKODE_NR_ANL) ON Anlægsdel.Tal = FRFDV_DV_FRAPSIKR.FEJLKODE_NR_ANLDEL) ON Fejlsted.Tal = FRFDV_DV_FRAPSIKR.FEJLKODE_NR_FEJLSTED) ON Fejlårsag.Tal = FRFDV_DV_FRAPSIKR.FEJLKODE_NR_ARS GROUP BY FRFDV_DV_FRAPSIKR.PRODENH_KODE, FRFDV_DV_FRAPSIKR.FEJLKODE_NR_ANL, FRFDV_DV_FRAPSIKR.FEJLKODE_BESKR_ANL, FRF_DV_FRAPANMELD.FEJL_INDTRADT HAVING (((FRFDV_DV_FRAPSIKR.PRODENH_KODE) Not Like "ISTR S-BAN"));
Og det er så den der hedder "FRF_DV_FRAPANMELD.FEJL_INDTRADT"
Prøv at erstatte den sidste linie (HAVING...) med følgende:
WHERE (((FRFDV_DV_FRAPSIKR.PRODENH_KODE) Not Like "ISTR S-BAN") AND ((CDate(Format([FRF_DV_FRAPANMELD.FEJL_INDTRADT],"short date"))) Between #03/01/2003# And #03/25/2003#) AND NOT ((CDate(Format([FRF_DV_FRAPANMELD.FEJL_INDTRADT],"long time"))) Between #07:00:00# And #15:00:00#));
WHERE (((FRFDV_DV_FRAPSIKR.PRODENH_KODE) Not Like "ISTR S-BAN") AND ((CDate(Format([FRF_DV_FRAPANMELD.FEJL_INDTRADT],"dd/mm/yy"))) Between #03/01/2003# And #03/25/2003#) AND NOT ((CDate(Format([FRF_DV_FRAPANMELD.FEJL_INDTRADT],"hh:nn:ss"))) Between #07:00:00# And #15:00:00#));
den skriver: der er en syntaksfejl, fordi der mangler en operator. i forespørgselsudtryket " FRF_DV_FRAPANMELD.FEJL_INDTRADT WHERE (((FRFDV_DV_FRAPSIKR.PRODENH_KODE) Not Like "ISTR S-BAN")); ".
HAVING (((FRFDV_DV_FRAPSIKR.PRODENH_KODE) Not Like "ISTR S-BAN") AND ((CDate(Format([FRF_DV_FRAPANMELD.FEJL_INDTRADT],"dd/mm/yy"))) Between #03/01/2003# And #03/25/2003#));
hmm. Nå men så siger vi det. Så skal vi bare lige have tiden med:
HAVING (((FRFDV_DV_FRAPSIKR.PRODENH_KODE) Not Like "ISTR S-BAN") AND ([FRF_DV_FRAPANMELD.FEJL_INDTRADT] Between #03/01/2003# And #03/25/2003#) AND(DatePart("h",[FRF_DV_FRAPANMELD.FEJL_INDTRADT]) NOT BETWEEN 7 AND 15));
Jeg tror nok jeg har styr på parenteserne, men er ikke helt sikker!
sonos>If you had shown us the FULL problem from the start then we could have saved time making suggestions which you couldnt use! I gave an answer (which works) for the question placed, and not to stamp anyone on their toes, the first CORRECT answer is the one which earns the points. Because YOU cant implement this isnt our fault!
sorry, jeg skal huske det til næste gang, men når man ikke ved så meget om hvad ens problem er, så er det jo også svært og forklare det, jeg prøvede det bedste jeg kunne.
Så slemt er du nu heller ikke. Jeg vil give terry ret langt hen af vejen, men det er IKKE nødvendigvis det første rigtige svar der skal have alle pointene! En hel del vælger faktisk at give lidt point til alle, der har hjulpet med løsningen. Det synes jeg personligt er den bedste måde at gøre det på. På den måde anerkender man jo også at folk gør en indsats for at hjælpe. Dermed ikke være sagt at alle, der svarer, skal have point - det er jo ikke alle svar der hjælper. Og selve fordelingen må være op til opgavestilleren (som så også må være forberedt på sure opstød fra folk, der føler sig trådt over tæerne). Hvis der er nogen, der her føler sig forbigået, så vil jeg da gerne overføre nogen af pointne - med sonos accept.
Et langt stykke hen ad vejen er jeg enig med terry. Hvis jeg havde set denne SQL fra starten,havde jeg ingen gang prøvet at give en kommentar.
Også enig med superjab i, at det ikke nødvendigvis er det første korrekte svar der fortjener alle point. Jeg har givet mange svar som er afprøvede først om som fungerer efter hensigten. Men er alligevel blevet overhalet indenom af de sædvanlige svarere her i kategorien, fordi deres svar er langt mere elegant end mit. Og det synes jeg er helt OK.
Selvom jeg har brugt lidt tid på dette, føler jeg mig absolut ikke forbigået fordi jeg ike har fået point.
Synes godt om
Ny brugerNybegynder
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.