Avatar billede sonos Nybegynder
27. marts 2003 - 08:19 Der 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.
Avatar billede proaccess Nybegynder
27. marts 2003 - 08:31 #1
I dit kriteriefelt kan du prøve at skrive:

(Between #01/03/2003# And #25/03/2003#) AND NOT (between #07:00:00# And #15:00:00#)
Avatar billede juks Novice
27. marts 2003 - 08:31 #2
hvordan laver du din søgning
Avatar billede mugs Novice
27. marts 2003 - 08:32 #3
Jeg går ud fra, at der til hver dato også er tilknyttet et tidspunkt men i et andet felt. F.eks vil en datotidsgruppe bestå af:

2003-01-01
og
08:00:00

Hvis det er tilfældet, kan du i din forespørgsel sammenstille dato og kl i et udtryk med denne syntaks:

Udtryk1: [startdato] & " " & [startkl]

Og derefter i din formular søge på udtrykket i.s.f. dato
Avatar billede proaccess Nybegynder
27. marts 2003 - 08:32 #4
bemærk at jeg "vender" dit tidsrum til IKKE at vise dem, som er melem 7 og 15...

Det giver det ønskede resultat men alternativet var 2 tidsafgrænsninger (fra midnat til 7 og fra 15 til midnat)
Avatar billede sonos Nybegynder
27. marts 2003 - 08:47 #5
Mit data felt indeholder både dato og tid i samme felt "01-01-2003 15:30:25" , så den første fra proaccess virker ikke :(
Avatar billede sonos Nybegynder
27. marts 2003 - 08:49 #6
jeg laver min søgning i en forespørgsel, eller ved jeg ikke hvad du mener.
Avatar billede proaccess Nybegynder
27. marts 2003 - 09:00 #7
Undskyld, jeg var ikke lige stået op endnu...

Du skal opdele dit felt i dag og tidspunkt.

Du siger:
WHERE (Int(Tidspunkt) Between #01/03/2003# And #25/03/2003#) AND (Tidspunkt-Int(Tidspunkt) NOT between #07:00:00# And #15:00:00#)
Avatar billede sjap Praktikant
27. marts 2003 - 09:38 #8
Hvis du kun bruger hele klokkeslet kan du også bruge DatePart-funktionen

SELECT Dato
FROM tblData
WHERE (((Dato)>#3/1/2001# And (Dato)<#3/25/2003#) AND ((DatePart("h",[Dato]))>15 Or (DatePart("h",[Dato]))<7));
Avatar billede sjap Praktikant
27. marts 2003 - 09:43 #9
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.

>=15 OR <7
Avatar billede terry Ekspert
27. marts 2003 - 09:56 #10
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#));
Avatar billede sjap Praktikant
27. marts 2003 - 09:59 #11
terry> Pokkers - så fandt du lige den funktion jeg savnede (CDate) :-)
Avatar billede terry Ekspert
27. marts 2003 - 10:00 #12
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#));
 
Date must be in mm/dd/yyyy format!
Avatar billede terry Ekspert
27. marts 2003 - 10:01 #13
:o)
Avatar billede sonos Nybegynder
27. marts 2003 - 10:42 #14
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
Avatar billede sjap Praktikant
27. marts 2003 - 10:43 #15
Du skal skrive det ind o en forespørgsels SQL editor.
Avatar billede sjap Praktikant
27. marts 2003 - 10:45 #16
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.
Avatar billede sjap Praktikant
27. marts 2003 - 10:47 #17
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.
Avatar billede sonos Nybegynder
27. marts 2003 - 11:05 #18
Hej igen

Jeg har bare der problem at jeg har flere kriterier fra andre tabeller med også, så jeg ved ikke hvor jeg skal sætte jeres foreslag ind.
Avatar billede sjap Praktikant
27. marts 2003 - 11:07 #19
Prøv at kopiere din nuværende SQL-sætning herud - så er der nok én af os, der kan lave et eksempel på hvordan, du skal gøre det.
Avatar billede sonos Nybegynder
27. marts 2003 - 11:08 #20
Kan det være efter dette:

HAVING (((FRFDV_DV_FRAPSIKR.PRODENH_KODE) Not Like "ISTR"));

Da det også er et kriterie at der ikke må stå ISTR i den nævnte tabel.
Avatar billede sonos Nybegynder
27. marts 2003 - 11:10 #21
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"));
Avatar billede sjap Praktikant
27. marts 2003 - 11:12 #22
hold da k...!
Avatar billede sjap Praktikant
27. marts 2003 - 11:14 #23
Fortæl mig lige navnet på den der indeholder dato og tid.
Avatar billede sonos Nybegynder
27. marts 2003 - 11:20 #24
Du får den lige igen med en rettelse:

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"
Avatar billede sjap Praktikant
27. marts 2003 - 11:28 #25
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#));
Avatar billede sonos Nybegynder
27. marts 2003 - 11:31 #26
den siger der mangler en operator
Avatar billede sjap Praktikant
27. marts 2003 - 11:41 #27
Prøv lige med

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#));
Avatar billede sonos Nybegynder
27. marts 2003 - 11:44 #28
Det er det samme, kan det være fordi at dato formatet er dd-mm-åååå, eller der skal byttes om på noget i dato feltet
Avatar billede sjap Praktikant
27. marts 2003 - 11:58 #29
Så prøver vi lige med lidt mindre skridt ad gangen:

WHERE (((FRFDV_DV_FRAPSIKR.PRODENH_KODE) Not Like "ISTR S-BAN"));

Virker det?
Avatar billede sonos Nybegynder
27. marts 2003 - 12:04 #30
Nej

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")); ".
Avatar billede sjap Praktikant
27. marts 2003 - 12:08 #31
Så går vi lige tilbage til HAVING:

HAVING (((FRFDV_DV_FRAPSIKR.PRODENH_KODE) Not Like "ISTR S-BAN"));

Det skulle gerne virke.
Avatar billede sonos Nybegynder
27. marts 2003 - 12:11 #32
Ja det virker
Avatar billede sjap Praktikant
27. marts 2003 - 12:14 #33
Så prøver vi lige at udvide den

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#));
Avatar billede sonos Nybegynder
27. marts 2003 - 12:20 #34
Nu siger den:

datatyperne stemmer ikke overens i kriterieudtrykket.
Avatar billede sjap Praktikant
27. marts 2003 - 12:22 #35
Nå. Prøv lige med den her så:

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#));
Avatar billede sonos Nybegynder
27. marts 2003 - 12:25 #36
ja det virker
Avatar billede sjap Praktikant
27. marts 2003 - 12:28 #37
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!
Avatar billede sonos Nybegynder
27. marts 2003 - 12:32 #38
Ok DET VIRKER!!!!!!

Det er bare fedt, TAAAAAAAAAAAAAAK

Mvh

Sonos
Avatar billede sonos Nybegynder
27. marts 2003 - 12:35 #39
skriv lige et eller andet så du kan få point
Avatar billede sonos Nybegynder
27. marts 2003 - 12:41 #40
når ok den har overført dem længere oppe
Avatar billede sjap Praktikant
27. marts 2003 - 12:42 #41
Mange tak. Håber det virker efter hensigten, ellers må du jo skrive igen :-)
Avatar billede terry Ekspert
27. marts 2003 - 13:27 #42
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!
Avatar billede sonos Nybegynder
27. marts 2003 - 13:57 #43
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.
Avatar billede sjap Praktikant
27. marts 2003 - 14:27 #44
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.
Avatar billede sonos Nybegynder
27. marts 2003 - 15:28 #45
Det er ok med mig, jeg var heller ikke klar over at man kunne give flere personer point
Avatar billede mugs Novice
27. marts 2003 - 15:43 #46
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.
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