08. marts 2013 - 16:48Der er
15 kommentarer og 1 løsning
Dato formattering
"Dato" er et felt af typen ShortDate i en tabel. "Start" og "Slut" er indtastede datoer i min formular. Jeg fremsøger alle poster der ligger indenfor søgekriteriet og det virker (næsten). Hvis start og slut dato er enslydende fremsøges der intet. Hvis der er en(1) dags difference så vises de poster der matcher start, men ikke de der matcher Slut. Hvis jeg eksempelvis vil fremsøge poster med dato den 28.02.2013, så kan jeg kun få dem frem på denne måde:
Start = 28-02-2013 Slut = 01-03-2013
Sådan ser min select ud: s1 = "((dato>=#" & Format(Start.Value, "mm-dd-yyyy") & "#" & " AND dato<=#" & Format(Slut.Value, "mm-dd-yyyy") & "#))"
Hej Claes57 Det ser lettere ud, men der selecteres intet. Formodentlig fordi at "dato" i mit eksempel er i format mm-dd-yyyy og de to andre i format dd-mm-yyyy.
bare fordi det er access, så prøv s1 = "Between #" & Format(Start.Value, "mm-dd-yyyy") & "# And #" & Format(Slut.Value, "mm-dd-yyyy") & "#" Der burde ikke være forskel...
Synes godt om
Slettet bruger
09. marts 2013 - 00:53#4
vedr #2: dd-mm-yyyy er en sprogvalgs præsentationsform - det er ikke noget start/slut er.
variablerne referers heller ikke ved navne eller typer i sql udtrykket - alle værdier er angivet som strengudtryk og ganske korrekt er dato på mm-dd-yyyy formen.
Fra immediate vinduet: ?typename(format(now(),"mm-dd-yyyy")) String
Jeg kan heller ikke se fejlen!
Det gør sikkert ingen forkel, men prøv ekstra parenteser - som i: ((start>=dato) and (dato<=slut))
Hej Jeg har en tilsvarende sql: SELECT * FROM [qryallering] WHERE ([Dato]<=#11 27 2012# + 1 ) and ([Dato]>=#11 26 2012#) Læg mærke til at jeg lægger EN dag til min øvre datogrænse, og at at den øvre datogrænse skrives først. Læg også mærke til datoformatet.-> mm dd yyyy Jeg kan godt huske at det drillede for lang tid siden, da det blev strikket sammen, men det virker :-) VH Anders Z.
WHERE ([Dato]<=#11 27 2012# + 1 ) and ([Dato]>=#11 26 2012#)
it shouldnt be necessary to put the highest of the two intervals first or add 1 day to it, unless of course you want include a day extra in the interval
Hej Rækkefølgen er ligegyldig og Nej det burde ikke være nødvendigt at lægge en dag til, men det er det af en eller anden "microsoft agtig " grund. Og når løsningen virker er det tit sådan at men accepterer løsningen :-) Vh Anders
If you look at the comment I made Skrevet lør. d. 09. marts 2013 kl. 19:03:04| #5
The reason is because if you dont include the time part then you risk NOT including records where there is a time.
I have a table which contains 2 records. Only one field of type date. The format is short date but this DOES NOT mean that it can only contain a date with no time part, it only mean that you see that date formeted without the time part.
When I view the record in the table they both have the same value
31-12-2010 31-12-2010
I make a query SELECT tblDates.SlutDato FROM tblDates WHERE (((tblDates.SlutDato)>=#12/31/2010# And (tblDates.SlutDato)<=#12/31/2010#));
But I only see one record in the result. Why can that be when the dates are the same?
Well its because the records actually contain a time too.
2010-12-31 00:00:00 2010-12-31 00:00:01
when you make a select and dont inlcude the time part as my comment indicates it is the same as making a query
WHERE (((tblDates.SlutDato)>=#12/31/2010 00:00:00# And (tblDates.SlutDato)<=#12/31/2010 00:00:00#));
which if you think about it, you have solved by adding 24 hours to the highest date interval. You could have just include 23:59:59 instead.
Og når løsningen virker er det tit sådan at men accepterer løsningen :-)
If you cant find a logical explanation then I'd agree too, but there is in this case.
Synes godt om
Slettet bruger
12. marts 2013 - 14:46#12
Det der er "microsoft agtig" kan så detaljeres til at udvikleren/administatoren/brugeren har ansvaret for at indholdet i felter af typen 'dato og klokkeslet' er 'rene datoer' - altså med 00:00:00 som dagsoffset.
'dato og klokkeslet' typens format går elene på præsentationen - det hverken forhindrer indtastning af eller nulstiller ved formatvalg i tabeldesign - dagsoffset
Dagsoffset=0 når man indtaster en ren dato i et felt.
Med andre ord: ms-access har ingen dato type - ms-access har en tidspunkt type - lidt, på sin vis, halvredundant formuleret på dansk som 'dato og tidspunkt'. Det er smart - for med omhu og behændighed kan man anvende den til eksklusivt én af følgende:
1. tidspunkt (tænk på et punkt på en tidslinie - 0~1899) 2. tidspunkt på dagen 3. dato
Dato/klokkeslet typen er implementeret som kommatal dagstæller, så ønsker man at kunne udføre den enkleste sammenligning med datoer alene, kan en dato i tabel A, med 'tilsmudsede datoer' renses vha.
I'd prefer pints but as points is all we can get then I'll place an answer which you need to accept :o)
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.