04. februar 2005 - 15:01Der er
6 kommentarer og 2 løsninger
Advanceret dato udtræk
Hejsa Allesammen....
Jeg håber virkelig der er nogen som kan hjælpe. Jeg har en MS Access Database med et dato felt, feltet bliver automatisk opdateret med dags dato når jeg tilføjer poster i databasen. Problemmet eller udfordringen består i at jeg skal lave et udtræk, der har følgende funktion:
Eks.: Alle poster tilføjet i uge (x) skal være synlige fra uge (x+1) om mandagen.
Derudover skal jeg have en funkrion der gør det modsatte, altså viser alle som ikke er tilføjet i ugen før.
Jeg har tidligere skrevet og endte med det her, men det synes ikke at virke, den gang så det således ud:
functionen: <%tmpDate = Date() Function weekNr (dtmDate) ' Week Of Year weekNr = DatePart("ww", dtmDate, vbMonday, vbFirstFourDays) If weekNr > 52 Then If DatePart("ww", dtmDate + 7 , vbMonday, vbFirstFourDays) = 2 Then weekNr = 1 End If End Function
Udtrækket: <%call opentbl("SELECT * FROM PartnerSearch WHERE AssignedTo = "&menu_id&" AND datePart('w',oprettet,2,2) = datePart('w',date()-7,2,2) AND Year(oprettet) = Year(date()-7)", rss)%>Håber I kan hjælpe, jeg giver så mange point som jeg kan da det virkelig er ved at være irriterende ;)
Et udgangspunkt kunne være følgende SQL: SELECT * FROM PartnerSearch WHERE (((DatePart("ww",[DatofeltIDatabase]))=DatePart("ww",Date())-1));
Så skal der justeres lidt omkring årsskiftet, og DatePart funktionen skal nok have et par ekstra parametre på, for at få den til at bruge de ugenumre vi bruger i DK. Men det er måske de parametre du har alerede, hvor du har 2,2 til sidst i din DatePart?
Lyder bare super. Det er vigtigt at alle som er tilføjet ugen forinden bliver viset mandagen ugen efter. Således at det ikke kun er dem der tilføjet mandag bliver vist mandag, tirsdag bliver vist tirsdag mv.
Ovenstående SQL skal selvølgelig tilpasses dit behov, men pointet er at du i din WHERE-sætning kan omregne datoen i databasen til ugenummer, og teste den op mod ugenummer baseret på datens dato (DatePart("ww",Date())-1)) giver ugenummer i sidste uge).
Er det rigtig forstået at det er sidste uge du ønsker at have fat i?
I den modsatte forespørgsel, hvor du ikke vil have med fra sidste uge, kan du bare spørge på ugenummre ulig sidste uge; WHERE (((DatePart("ww",[DatofeltIDatabase]))<>DatePart("ww",Date())-1));
Du har eventuelt også behov for at sortere på år. Jeg vender tilbage....
Select sætningen som jeg har vist, viser hele forrige uge, så i hele uge 5 viser den hele uge 4.
Jeg checket med dine parametre i DateDiff funktonen (2,2) og de skal være med for å få rigtig ugenummer i DK: SELECT * FROM PartnerSearch WHERE DatePart("ww",[DatofeltIDatabase],2,2)=DatePart("ww",Date(),2,2)-1;
Jeg mangler fortsat en håndtering af årsskifte. Enten kan man lave noget ASP der checker ugenummer, og hvis man er i ugenummer 1, bruges en speciel SQL der henter sidste uge i året før, ellers bruges den generelle SQL der henter forrige uge.
Jeg har testet lidt med at lave en generel SQL som kan klare det, men har ikke helt løsningen endnu. En måde at gøre det på, er at kombinere ugenummer og år (YearUge: DatePart("yyyy",[Dato],2,2) & FormatNumber(DatePart("ww",[Dato],2,2),"00")), men her har jeg to udfordringer som skal løses; 1) Ugenummer skal formateres så ugenummer lavere end uge 10 får et 0 forran 2) Jeg skal have fat i årstallet for ugenummeret, og ikke for datoen. De to første dage i år 2005 hører til uge 53, og variabelen jeg skal checke på skal så være 200453 og ikke 200553.
Jeg er ikke helt kommet frem til en løsning endnu. forsøgte med følgende, men den giver ikke helt hvad jeg ønsker: YearUge: CStr((DatePart("yyyy",[Dato],2,2)-IIf(DatePart("m",[Dato])=1 And DatePart("ww",[Dato])>5,1,0))*100+FormatNumber(DatePart("ww",[Dato],2,2),"00"))
Hvis du ikke får en løsning inden, vil jeg ofrsøge at kigge på det en gang i weekenden igen.
Tak for begge løsninger, jeg endte med at anvende eagleeye, men I deler pointene ;)
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.