webForumDet fria alternativet

kalender som visar matcher, tuneringar och träningar

ASP

137 svar · 3 703 visningar · startad av PLks · sida 3 av 7

Frågan, av PLks

hej wf jag har en tblKalender (Access 2003) med följande fält/egenskaper - id/räknare - datum/långformat - starttid/medellång tid - sluttid/medellång - aktivitet/text - motståndare - lokal/text Använder en formulär för att lägga in data. Datan vill jag sedan listapå rätt datum (dvs rätt tabellcell) Hur gör jag så jag täcker alla dess

Läs frågan i sin helhet →
Medlem sedan juni 200032 967 inlägg
#41

Då innehåller endDatum NULL. Varför? Ska du verkligen vara i Else-delen då?

Medlem sedan sep. 2004201 inlägg
#42

@nders skrev:

Då innehåller endDatum NULL. Varför?

Japp. Det är bara de poster som har återkommande aktiviteter, dvs poster där rsBokat("aktivitet") är varken

Left(rsBokad("aktivitet"), 2) = "Ma"

eller

Left(rsBokad("aktivitet"), 3) = "Trä"

som har ett värde för endDatum. De som slutar
samma dag behöver ju inte... Där lämnas fältet tomt (=oifyllt)
Jag har (hoppas jag) tillåtit NULL i access 2003 database, genom att sätta fältets egenskaper till icke obligatorisk

@nders skrev:

Ska du verkligen vara i Else-delen då?

Var kan jag vara istället?
det jag gör ju (hoppas jag):

  1. kollar om datumet finns i databasen
  2. Om ja, kolla om det är träning --> skriv ut
  3. Om ja, kolla om match --> skriv ut
  4. Om ja, skriv ut aktiviteten samtliga dagar som den inträfar
Medlem sedan juni 200032 967 inlägg
#43

När du har lagt koden som den ligger, och du får felmeddelandet som du får, så innebär det att du kommer in i Else-delen trots att du inte har något endDatum ifyllt i tabellen. Det känns som att antingen är det fel i if-satsen, eller så är det fel i datat.

Jag förstår inte heller din yttersta loop. Loopar du alltså igenom hela koden en gång per dag? Då skulle jag ta bort if-satsen i loopen som kontrollerar om det är rätt månad och rätt dag, i så fall skriv ut, och lägga till dag och månad som villkor i SQL-frågan istället. Det finns ju ingen som helst anledning att hämta exakt samma data 31 gånger...

Medlem sedan sep. 2004201 inlägg
#44

@nders skrev:

Jag förstår inte heller din yttersta loop. Loopar du alltså igenom hela koden en gång per dag?

Jag loopar bara igenom när sidan laddas:
Som det är nu så har jag ju en skrivbordskalender . Det nya är att jag lagt till en databas, upptaget.mdb (acces 2003).
När sidan laddas, dvs innan sidan visas vill jag

  1. kolla om det finns ngra poster för aktuell månad
  2. Om ja --> kolla om träning --> skriv ut i rätt tabellrad ( dvs rätt datum
  3. Om ja, kolla om match --> skriv ut i rätt tabellrad ( dvs rätt datum)
  4. Om ja --> skriv ut den återkommande aktiviteten -->skriv ut i rätt tabellrad ( dvs rätt datum)
  5. Om nej skriv ut kalendern som det är idag

Är det lättare att förstå nu?

Det känns som att antingen är det fel i if-satsen, eller så är det fel i datat.

Jag bifogar databasen. Den är ifylld direkt i access. Tänkte först få det hela att fungera innan jag kokar ihop en formulär

Medlem sedan juni 200032 967 inlägg
#45

Jag loopar bara igenom när sidan laddas:

Jo, men du loopar en gång per dag i aktuell månad. Så när sidan laddas öppnar du samma recordset och ställer samma SQL-fråga 31 gånger (om det nu är så många dagar i aktuell månad), och det kan ju inte vara rätt.

Medlem sedan sep. 2004201 inlägg
#46

det konstiga är att det funkar när jag bara skall skriva ut rakt av fr db.

lägga till dag och månad som villkor i SQL-frågan istället.

kan du ge ett enkelt exempel på hur detta kunde se ut?

Medlem sedan sep. 2004201 inlägg
#47

Förestän verkar det vara fel med datan oxå.
Koden som funkade så bra igår innan uppdatering av databasen

<%
Session.LCID = 1053
Set minCon = Server.CreateObject("ADODB.Connection")
set rsBokad = Server.CreateObject("ADODB.Recordset")
minCon.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("\ovaasp\db\upptaget.mdb")
strSQL =" SELECT * FROM upptaget ORDER by ID DESC"
rsBokad.Open strSQL, minCon, 3, 3

Do While Not rsBokad.EOF
	If Left(rsBokad("aktivitet"), 3) = "Trä" Then
		Response.Write "<P>" & rsBokad("startDatum") & "  " & rsBokad("aktivitet") & " " 
		Response.Write FormatDateTime(rsBokad("startTid"), 4) & " - " 
		Response.Write FormatDateTime(rsBokad("endTid"), 4) & " , " & rsBokad("lokal") & "<P>"
	ElseIf Left(rsBokad("aktivitet"), 2) = "Ma" Then
		Response.Write rsBokad("startDatum") & "  " & rsBokad("aktivitet") & " mot  " 
		Response.Write rsBokad("Mot") & " i" & rsBokad("lokal") & ", kl " 
		Response.Write  FormatDateTime(rsBokad("startTid"), 4) & "<P>"
	Else 
		dStartDate = Cdate(rsBokad("startDatum"))
		dEndDate = Cdate(rsBokad("endDatum"))
		For dTempDate = dStartDate to dEndDate
			Response.Write dTempDate & " " & rsBokad("aktivitet") & " i "  	
			Response.Write rsBokad("lokal") & "<BR>"
Response.Write Month(dTempDate) & "   " & Day(dTempDate) & "<BR>"
		Next
	End if
	rsBokad.MoveNext
Loop

rsBokad.Close
Set rsBokad = Nothing
minCon.Close
Set minCon = Nothing
%>
>

Samma fel

Microsoft VBScript runtime error '800a005e'

Invalid use of Null: 'Cdate'

/ovaasp/upptaget100.asp, line 26

blir mer och mer mysko...

Medlem sedan juni 200032 967 inlägg
#48

Då skulle jag i alla börja med att felsöka datan och se till så den är riktig. Om inte datan är rätt så är det svårt att rätta till scriptet, så att säga.

Medlem sedan sep. 2004201 inlägg
#49

Nu har jag hittat 2 fel i databasen och rättat till dessa, men resultatet bilr inte som igår*snyft*
Igår fick jag utskrift på

  • träning
  • matcher
  • återkommande aktivitet

Idag med koden:

<%
Session.LCID = 1053
Set minCon = Server.CreateObject("ADODB.Connection")
set rsBokad = Server.CreateObject("ADODB.Recordset")
minCon.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("\ovaasp\db\upptaget.mdb")
strSQL =" SELECT * FROM upptaget ORDER by ID DESC"
rsBokad.Open strSQL, minCon, 3, 3

Do While Not rsBokad.EOF
	If Left(rsBokad("aktivitet"), 3) = "Trä" Then
		Response.Write "<P>" & rsBokad("startDatum") & "  " & rsBokad("aktivitet") & " " 
		Response.Write rsBokad("startTid") & " - " 
		Response.Write rsBokad("endTid") & " , " & rsBokad("lokal") & "<P>"
	ElseIf Left(rsBokad("aktivitet"), 2) = "Ma" Then
		Response.Write rsBokad("startDatum") & "  " & rsBokad("aktivitet") & " mot  " 
		Response.Write rsBokad("Mot") & " i" & rsBokad("lokal") & ", kl " 
		Response.Write  rsBokad("startTid") & "<P>"
	   Else
		dStartDate = Cdate(rsBokad("startDatum"))
		dEndDate = Cdate(rsBokad("endDatum"))
		For dTempDate = dStartDate to dEndDate
			Response.Write "<BR>" & dTempDate & " " & rsBokad("aktivitet") & " i "  	
			Response.Write rsBokad("lokal") & "<P>"
		Next
	End if
	rsBokad.MoveNext
Loop

rsBokad.Close
Set rsBokad = Nothing
minCon.Close
Set minCon = Nothing
%>

får jag

2005-06-03 Eken Cup i Solna

2005-06-04 Eken Cup i Solna

2005-06-05 Eken Cup i Solna

2005-06-06 Eken Cup i Solna

2005-06-07 Eken Cup i Solna

Microsoft VBScript runtime error '800a005e'

Invalid use of Null: 'Cdate'

/ovaasp/upptaget103.asp, line 26

Medlem sedan jan. 20022 440 inlägg
#50
Do Until rsBokad.EOF
Medlem sedan juni 200032 967 inlägg
#51

CatZ skrev:

Do Until rsBokad.EOF

Vad hade du tänkt att det skulle vara för skillnad?

Medlem sedan sep. 2004201 inlägg
#52

Fattar inte vad som har hänt med databasen*river sitt hår*
Funkade ju kanon igår....

Medlem sedan jan. 20022 440 inlägg
#53

Du kan ju alltid kolla så att det som kommer ut stämmer eller. Det ser ju ut som du får ut ett värde som är helt tomt i databasen...

If IsDate(rsBokad("startDatum")) Then
	dStartDate = Cdate(rsBokad("startDatum"))
Else
	dStartDate = "rsBokad('startDatum') är i fel format"
End If
If IsDate(rsBokad("endDatum")) Then
	dEndDate = Cdate(rsBokad("endDatum"))
Else
	dEndDate = "rsBokad('endDatum') är i fel format"
End If
Medlem sedan jan. 20022 440 inlägg
#54

Det blir ju inget felmeddelande alls när jag kollae på länken

http://www45.brinkster.com/ovaasp/upptaget103.asp skrev:

2005-06-03 Eken Cup i Solna
2005-05-25 Avslutning i Enskedehallen
2005-05-21 Match mot Brahe BBK iBrahehallen, kl 15:00:00

2005-05-20 Träning 17:00:00 - 18:30:00 , Västbodaskolan

2005-05-18 Träning 18:00:00 - 19:30:00 , Västbodaskolan

2005-05-16 Träning 17:00:00 - 18:00:00 , Västbodaskolan

Web Hosting by Brinkster

Skulle tro att du måste gå till internet explorers inställningar och välja uppdatera sidan varje gång den besöks eller starta om datorn eller tömma cachen i explorer ELLER mozilla eller vad du nu använder dig av

Medlem sedan sep. 2004201 inlägg
#55

Det blir ju inget felmeddelande alls när jag kollae på länken

jag håller ju på att jobba med sidan...

Medlem sedan sep. 2004201 inlägg
#56

det verkar som konstruktionen för att lista återkommande händelser

Else
		dStartDate = Cdate(rsBokad("startDatum"))
		dEndDate = Cdate(rsBokad("endDatum"))
		For dTempDate = dStartDate to dEndDate
			Response.Write "<BR>" & dTempDate & " " & rsBokad("aktivitet") & " i "  	
			Response.Write rsBokad("lokal") & "<P>"
		Next

som inte funkar...

Medlem sedan juni 200032 967 inlägg
#57

Och du har dubbelkollat så alla poster vars aktivitet inte börjar med trä eller ma har giltiga datum i både startDatum och endDatum?

Medlem sedan sep. 2004201 inlägg
#58

Vilken tabbe av mig... Du @nders är en klippa

Och du har dubbelkollat så alla poster vars aktivitet inte börjar med trä eller ma har giltiga datum i både startDatum och endDatum?

Sedan igår har ju tillkommit avslutningen i Enskedehallen, detta saknar ju slutdatum*klantiga mig*

Medlem sedan sep. 2004201 inlägg
#59

Nu har jag ändrat lite

Else If Right(strText, 3)= "Cup" Then
           dStartDate = Cdate(rsBokad("startDatum"))
	   dEndDate = Cdate(rsBokad("endDatum"))
		For dTempDate = dStartDate to dEndDate
			Response.Write "<BR>" & dTempDate & " " & rsBokad("aktivitet") & " i "  	
			Response.Write rsBokad("lokal") & "<P>"
		Next
              End If
	   Else 
		For d=startDatum to endDatum
			Response.Write rsBokad("startDatum") & " " & rsBokad("aktivitet") & " i "  	
			Response.Write rsBokad("lokal") & "<BR>"
		Next
	End if
	rsBokad.MoveNext
Loop

rsBokad.Close
Set rsBokad = Nothing
minCon.Close
Set minCon = Nothing

men nu vill "de" haMicrosoft VBScript compilation error '800a040e'

'loop' without 'do'

/ovaasp/upptaget103.asp, line 38

Loop
^

Medlem sedan juni 200032 967 inlägg
#60

Ska verkligen det feta vara där?

Else If Right(strText, 3)= "Cup" Then
           dStartDate = Cdate(rsBokad("startDatum"))
	   dEndDate = Cdate(rsBokad("endDatum"))
		For dTempDate = dStartDate to dEndDate
			Response.Write "<BR>" & dTempDate & " " & rsBokad("aktivitet") & " i "  	
			Response.Write rsBokad("lokal") & "<P>"
		Next
              [b]End If[/b]
	   Else 
		For d=startDatum to endDatum
			Response.Write rsBokad("startDatum") & " " & rsBokad("aktivitet") & " i "  	
			Response.Write rsBokad("lokal") & "<BR>"
		Next
	End if
	rsBokad.MoveNext
Loop

rsBokad.Close
Set rsBokad = Nothing
minCon.Close
Set minCon = Nothing
265 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849
123 ms — deklarationer (db)
0 ms — hämta statistik (cache)
139 ms — hämta tråd, inlägg och bilagor (db)
124 ms — ändringar (db)