webForumDet fria alternativet

Veckfunktion

ASPur ASP

16 svar · 1 063 visningar · startad av asp

Medlem sedan aug. 2002733 inlägg
Frågan#1

Hej.

Om jag vill hämta alla poster i databasen som har skapats denna vecka. Men med DatePart funktionen så börjar ju en vecka på söndag. Kan jag på något sett med hjälp av DateAdd funktionen? Jag vill alltså att veckan skall börja på måndag och sluta på söndag.

Tack på förhand.

Medlem sedan dec. 200012 464 inlägg
#2

Ange start och slutadatum för veckan istället.

Medlem sedan aug. 2002733 inlägg
#3

Löste det med:

DatePart("ww", Now(), 2, VBFIRSTFULLWeek)
Medlem sedan maj 200010 687 inlägg
#4

Om du vill ha svenska veckor så måste du skriva:

DatePart("ww", Now, vbMonday, vbFirstFourDays)
Medlem sedan aug. 2002733 inlägg
#5

Erik >> Min kod fungerade som svenska veckor. Är det något fel på min eller är din att föredra?

Medlem sedan juni 200032 969 inlägg
#6

Din kod fungerar kanske just nu, men sista parametern syftar till att tala om vad som räknas som årets första vecka. I Sverige är det den första veckan som innehåller fyra januaridagar som är årets första vecka, inte den första vecka som innehåller sju januaridagar. Så ja, din kod fungerar, i drygt tre månader till.

Edit: din kod fungerar faktiskt nästa år också, pga röta. Men sen är det stopp. Använd alltid vbFirstFourDays, så slipper du vara tvungen att ha röta för att dina datumfunktioner ska vara riktiga.

Medlem sedan aug. 2002733 inlägg
#7

@anders >> Då har jag två år på mig att ändra. :) Tack för svaret, skall ändra genast...

Medlem sedan aug. 2002733 inlägg
#8

Nu har jag fått nog!

Jag vill helt enkelt hämta poster från tabellen Resor där fältet start har datumet i denna vecka.

SELECT * FROM Resor WHERE vecka(start) = dennavecka

Har testat alla möjliga funktioner men får det inte att fungera, någon vänlig själ som har lust att skriva om SQL satsen korrekt?

Medlem sedan dec. 20025 483 inlägg
#9
SELECT * FROM Resor WHERE DatePart("ww", start, vbMonday, vbFirstFourDays) = DatePart("ww", Now, vbMonday, vbFirstFourDays)
Medlem sedan aug. 2002733 inlägg
#10

När jag lägger till de två sista parametrarna i DatePart funktionen i SQL satsen får jag:

Error Type:
Microsoft OLE DB Provider for ODBC Drivers (0x80040E10)
[Microsoft][ODBC Microsoft Access Driver] Too few parameters. Expected 2.
/stat/313.asp, line 22

Medlem sedan dec. 20025 483 inlägg
#11

Ser SQL-satsen ut enligt ovan om du skriver ut den?

Testa byta citationstecknen mot apostrofer.

Medlem sedan nov. 20051 317 inlägg
#12

Skriv ut SQL-frågan som Peter säger...

SQL = "Din fråga"
Response.Write SQL
Medlem sedan aug. 2002733 inlägg
#13

SQL satsen blir...

SELECT * FROM Medlemmar WHERE referens = 1 AND DatePart('ww', start, vbMonday, vbFirstFourDays) = DatePart('ww', Now, vbMonday, vbFirstFourDays)

Felmeddelande...

Error Type:
Microsoft OLE DB Provider for ODBC Drivers (0x80040E10)
[Microsoft][ODBC Microsoft Access Driver] Too few parameters. Expected 3.
/lp/ny/hander_veckan.asp, line 13

Rad 13...

Set rs = objConn.Execute("SELECT * FROM Medlemmar WHERE referens = " & Session("REF") & " AND DatePart('ww', start, vbMonday, vbFirstFourDays) = DatePart('ww', Now, vbMonday, vbFirstFourDays)")
Medlem sedan dec. 20025 483 inlägg
#14

Vilken datatyp är 'start'? Kan den vara NULL? Har du testat frågan direkt i Access?

Medlem sedan juni 200032 969 inlägg
#15

Felmeddelandet brukar betyda: "Det finns 3 tabell- eller fältnamn jag inte fattar". Jag skulle gissa på att vb-konstanterna vbMonday och vbFirstFourDays är odefinierade i Access, och därför tror access/odbc att du har specificerat fältnamn. Använd de numeriska värdena istället.

http://www.techonthenet.com/access/functions/date/datepart.php

Medlem sedan dec. 20025 483 inlägg
#16

Det verkar rimligt! :bire

Medlem sedan aug. 2002733 inlägg
#17

Tack @nders! Tack också Peter... :)

131 ms totalt · 3 externa anrop · v20260731065814-full.25f56b17
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
128 ms — hämta tråd, inlägg och bilagor (db)