webForumDet fria alternativet

Mellandatum i kalender

5 svar · 624 visningar · startad av Krekan

KrekanMedlem sedan dec. 200215 inlägg
#1

Hej!
Har en kalender där aktiviteter renderas. Mitt problem är dock följande: Säg att vi har en aktivitet som sträcker sig från 17/3 till 19/3. Jag får i kalendern in denna aktivitet på den 17:e och 19:e men inte på den 18:e. Hur löser man detta? Har klurat med SQL-sats ett bra tag nu, men det har låst sig helt för mig.

NETworkMedlem sedan juni 20011 732 inlägg
#2

Se till att du har ett start och ett slutdatum. Sedan i din dayrender lägger du en ifsats som kollar om den dag som för tillfället renderas är större eller lika med ditt startdatum och mindre eller lika med ditt slutdatum. Om uttrycket är sant så gör du vad-du-nu-vill-göra! Typ nåt sånt här:

private void DayRender(object sender, System.Web.UI.WebControls.DayRenderEventArgs e) {
  if(e.Day.Date >= StartDate && e.Day.Date <= EndDate) {
    e.Cell.BackColor = Color.Blue;
  }
}
KrekanMedlem sedan dec. 200215 inlägg
#3

Tack för svar .... men problemet uppkommer tidigare än så. Säg att tabellen (Aktivitet) har följande rader:
ID
AktivitetsNamn
Startdatum
Slutdatum (inte obligatoriskt)

Jag har i tabellen en aktivitet som har Startdatum 2004-03-17 och Slutdatum 2004-03-19.

Min SQL-sats ser just nu ut som följer:

SELECT * FROM Aktivitet WHERE (Startdatum >= '2004-03-17' AND Startdatum <= '2004-03-17')
OR (Slutdatum >= '2004-03-17' AND Slutdatum <= '2004-03-17')

Jag får då fram alla aktiviteter som börjar eller slutar den 17/3. Detta fungerar utmärkt. Likaså får jag fram aktiviteten om jag skickar in '2004-03-19'. Men det är när jag skriver '2004-03-18' som den inte hittar någonting ... av naturliga skäl. Frågan är hur man skall skriva SQL-satsen för att få ut den här posten då. Jag vill heller inte hämta alla posterna och göra urvalen i kalenderkoden.

NETworkMedlem sedan juni 20011 732 inlägg
#4

Aha, då flyttar vi tråden där den besvaras bäst. :)

NETworkMedlem sedan juni 20011 732 inlägg
#5

Kan väl göra ett försök att svara när jag ändå är här, om jag inte missuppfattat dig helt så är det väl bara att skriva:

SELECT * FROM Aktivitet WHERE Startdatum >= 'startdate' AND Slutdatum <= 'enddate')

?

KrekanMedlem sedan dec. 200215 inlägg
#6

Tja, fast det blev tvärtom :) Med din SQL-sats så kommer de inte alls fram. Detta på grund av att 2004-03-18 är större än startdatum och mindre än slutdatum. Fick vända på >= och <= och lägga till lite kod för de aktiviteter som inte har ett slutdatum så fungerar det. Tack för hjälpen!

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