webForumDet fria alternativet

kalender som visar matcher, tuneringar och träningar

ASP

137 svar · 3 703 visningar · startad av PLks · sida 4 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 sep. 2004201 inlägg
#61

Den är inte där...
däremot finns ju fle meddelandet

Microsoft VBScript compilation error '800a040e'

'loop' without 'do'

/ovaasp/upptaget103.asp, line 38

Loop
^

Medlem sedan juni 200032 967 inlägg
#62

Vad menar du med "den är inte där"? Det är den ju visst, åtminstone i den kod du visar??

Medlem sedan sep. 2004201 inlägg
#63

Vad menar du med "den är inte där"? Det är den ju visst, åtminstone i den kod du visar??

jag menar att i "skarpa ver." på Brinkster är den inte där...

Medlem sedan juni 200032 967 inlägg
#64

Ok. Hur ser hela den skarpa koden på Brinkster för den upptaget103.asp ut då?

Medlem sedan sep. 2004201 inlägg
#65

Ok. Hur ser hela den skarpa koden på Brinkster för den upptaget103.asp ut då?

<%@LANGUAGE="VBSCRIPT" CODEPAGE="1252"%>
<html>
<head>
<title>Untitled Document</title>
</head>
<body>
<%
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 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
              	   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
%>
</body>
</html>
Medlem sedan juni 200032 967 inlägg
#66
        Else If Right(strText, 3)= "Cup" Then

skall vara

        Elseif Right(strText, 3)= "Cup" Then
Medlem sedan sep. 2004201 inlägg
#67

@nders skrev:

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.

kan du månne ge ett exempel, typ hur du menar?

Medlem sedan sep. 2004201 inlägg
#68

Nu har jag lyckats lista databasen och få det att se ut som jag vill

<%@LANGUAGE="VBSCRIPT" CODEPAGE="1252"%>
<html>
<head>
<title>Untitled Document</title>
</head>
<body>
<%
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 ASC"
rsBokad.Open strSQL, minCon, 3, 3

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

rsBokad.Close
Set rsBokad = Nothing
minCon.Close
Set minCon = Nothing
%>
</body>
</html>

funkar hos Brinkster , frågan är:

  • är det bara tur eller är det ovanstående rätt med?
Medlem sedan sep. 2004201 inlägg
#69

@nders skrev:

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

Är det detta du menade

strSQL =" SELECT * FROM upptaget WHERE int(manad) = Month(rsBokad("startDatum")) AND iDag = Day(rsBokad("startDatum")) ORDER by ID ASC"

Om ja, hur får man/vi/jag med dTempDate ?

Medlem sedan juni 200032 967 inlägg
#70

Nja, det var inte riktigt så jag menade. Du kan inte använda information från rsBokad, eftersom det recordsetet inte finns än. Jag hade tänkt mig något sånt här:

strSQL = "SELECT * FROM upptaget WHERE month(startDatum) = " & manad & " AND day(startDatum) = " & iDag & " ORDER by ID ASC"

Men jag är inte helt säker på datum funktionerna i Jet SQL (jag använder ju inte Access.)

På vilket sätt ska du ha med dTempDate? Det är ju en variabel som skapas med hjälp av datat från recordsetet.

är det bara tur eller är det ovanstående rätt med?

Normalt kan man säga att fungerar det så är det rätt, men det finns alltid (oftast iaf) bättre sätt att lösa saker och ting på. :)

mvh

Medlem sedan sep. 2004201 inlägg
#71

@nders skrev:

På vilket sätt ska du ha med dTempDate? Det är ju en variabel som skapas med hjälp av datat från recordsetet.

så jag behöver inte bekymra mig för dTempDate, mer än

dStartDate = Cdate(rsBokad("startDatum"))
	    dEndDate = Cdate(rsBokad("endDatum"))
		For dTempDate = dStartDate to dEndDate

Ok, jag sätter igång med arbetet att foga ihop till kalender...
Önska mig lycka till...

Medlem sedan sep. 2004201 inlägg
#72

Här kommer 1:a resultatet av "syslöjden"

<%
Response.Write "<CENTER><FONT SIZE =""4""><B>" & FirstVersal(MonthName(manad)) & ", " & ar & "</B></FONT></CENTER>"
Response.Write "<CENTER><TABLE CLASS=""table"" CELLSPACING=""0"" CELLPADDING=""1"">"
For iDag = 1 to DatePart("d", DateSerial(ar, manad+1, 0)) 
	aDagar(iDag) = WeekDayName(DatePart("w",ar & "-" & manad & "-" & iDag))
	iWeekDay = DatePart("w",ar & "-" & manad & "-" & iDag)
Response.Write "<TR><TD CLASS=""tdleft"" ALIGN=""CENTER"" VALIGN=""BOTTOM""><CENTER><B><FONT SIZE=""5"">"
Response.Write iDag
Response.Write "</FONT></B></CENTER></TD><TD CLASS=""tdnamn"" VALIGN=""BOTTOM"">" &  FirstVersal(aDagar(iDag)) & "</TD>"[red]
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 WHERE month(startDatum) = " & manad & " AND day(startDatum) = " & iDag & " ORDER by ID ASC"
rsBokad.Open strSQL, minCon, 3, 3
Do While Not rsBokad.EOF

If Left(rsBokad("aktivitet"), 3) = "Trä"  then
	    Response.Write "</FONT></B></TD><TD CLASS=""tdcal""  VALIGN=""BOTTOM"">" & rsBokad("aktivitet")
	 	Response.Write ", kl " & FormatDateTime(rsBokad("startTid"), 4) & " - "
	 	Response.Write FormatDateTime(rsBokad("endTid"), 4) & " , " & rsBokad("lokal")
	ElseIf Left(rsBokad("aktivitet"), 2) = "Ma" Then
		Response.Write "</FONT></B></TD><TD CLASS=""tdcal""  VALIGN=""BOTTOM"">" & rsBokad("aktivitet")
		Response.Write " mot  " & rsBokad("Mot")
		Response.Write " i " & rsBokad("lokal") & ", kl " 
		Response.Write  FormatDateTime(rsBokad("startTid"), 4) 
    ElseIf Right(rsBokad("aktivitet"), 3) = "Cup" Then
	    dStartDate = Cdate(rsBokad("startDatum"))
	    dEndDate = Cdate(rsBokad("endDatum"))
		For dTempDate = dStartDate to dEndDate
		   Response.Write "</FONT></B></TD><TD CLASS=""tdcal""  VALIGN=""BOTTOM"">" & rsBokad("aktivitet")
		   Response.Write ", i " & rsBokad("lokal")
		   		Next
    ElseIf Right(rsBokad("aktivitet"), 3) = "Cam" Then
	    dStartDate = Cdate(rsBokad("startDatum"))
	    dEndDate = Cdate(rsBokad("endDatum"))
		For dTempDate = dStartDate to dEndDate
		   Response.Write "</FONT></B></TD><TD CLASS=""tdcal""  VALIGN=""BOTTOM"">" & rsBokad("aktivitet")
		   Response.Write ", i " & rsBokad("lokal")
      Next
	  Else
	     Response.Write "</FONT></B></TD><TD CLASS=""tdcal""  VALIGN=""BOTTOM"">" & rsBokad("aktivitet")
		  Response.Write ", i " & rsBokad("lokal")
  dStartDate = Cdate(rsBokad("startDatum"))
  dEndDate = Cdate(rsBokad("endDatum"))	
  For dTempDate = dStartDate to dEndDate 	
 
	Response.Write "</FONT></B></TD><TD CLASS=""tdcal""  VALIGN=""BOTTOM"">" & rsBokad("aktivitet")
	Response.Write " i "  	
	Response.Write rsBokad("lokal")
	End if
	rsBokad.MoveNext
Loop

rsBokad.Close
Set rsBokad = Nothing
minCon.Close
Set minCon = Nothing[/red]

If cint(manad) = Month(GeAllhelgon(ar)) AND iDag = Day(GeAllhelgon(ar)) then
       Response.Write "</FONT></B></TD><TD CLASS=""tdhelg""  VALIGN=""BOTTOM"">"
       Response.Write  "Alla Helgons dag"
	ElseIf int(manad) = Month(NewYearday(ar)) AND iDag = Day(NewYearday(ar)) then
		Response.Write "</FONT></B></CENTER></TD><TD CLASS=""tdhelg""  VALIGN=""BOTTOM"">"
        Response.Write  "Nyårsdagen"
	|
	|
	|
	|
		
      Else
					Response.Write "</FONT></B></TD><TD CLASS=""tdhelg"" VALIGN=""BOTTOM"">&nbsp;</TD>"
		End If
Response.Write "</FONT></TD><TD CLASS=""tdright"" ALIGN=""RIGHT"" VALIGN=""BOTTOM""><FONT SIZE=""3"">"
	If iDag = 1 or iWeekDay = 2 Then 
	  Response.Write " v " & datePart("ww",CDate(ar & "-" & manad & "-" & iDag ),2,2)
	 Else Response.Write "&nbsp;"
	 End If
Response.Write "</FONT></TD></TR>"
Next
Response.Write "</TABLE></CENTER>"
%>

ny kod är rödmarkerad
Får

Microsoft VBScript compilation error '800a0400'
Expected statement
/ovaasp/skrivbordskalender104.asp, line 325
End if
^

men har ju End If

320: For dTempDate = dStartDate to dEndDate 
321: 
322: Response.Write "</FONT></B></TD><TD CLASS=""tdcal""  VALIGN=""BOTTOM"">" & rsBokad("aktivitet")
323: Response.Write " i "  
324: Response.Write rsBokad("lokal")
325: End if
326:	rsBokad.MoveNext
327:  Loop
328:
329:  rsBokad.Close
330: Set rsBokad = Nothing
Medlem sedan juni 200032 967 inlägg
#73

Du måste se till att indentera koden ordentligt, annars kommer du få sådana fel i all evinnerlighet.

Med välindenterad kod är det mycket lättare att se vad man gjort fel.

Medlem sedan sep. 2004201 inlägg
#74

@NDERS skrev:

Du måste se till att indentera koden ordentligt, annars kommer du få sådana fel i all evinnerlighet.

Och felet är...?

Medlem sedan juni 200032 967 inlägg
#75

... lättare att se när du indenterat koden...

Medlem sedan sep. 2004201 inlägg
#76

... hittar inte

  1. trodde först att det saknades next på rad 325 - men icke
  2. sedan en End If till - men icke

så snälle :r hjälp mig så att jag kan sova inatt

Medlem sedan sep. 2004201 inlägg
#77

hittad felet... Jippie!! så här skall det se ut!

Else
	     Response.Write "</FONT></B></TD><TD CLASS=""tdcal""  VALIGN=""BOTTOM"">" & rsBokad("aktivitet")
		  Response.Write ", i " & rsBokad("lokal")
End if
	rsBokad.MoveNext
Loop

rsBokad.Close
Set rsBokad = Nothing
minCon.Close
Set minCon = Nothing
Medlem sedan sep. 2004201 inlägg
#78

Nu var jag lite för snabb.
Om ni går till nästa månad så ser de repeterade posterna konstiga ut =de skrivs ut i samma Tabellcell istället för i celler efter (under) varandra.
Jag har ändrar koden till

ElseIf Right(rsBokad("aktivitet"), 3) = "Cup"    AND int(manad) = Month(dTempDate) AND iDag = Day(dTempDate) then	    dStartDate = Cdate(rsBokad("startDatum"))
	    dEndDate = Cdate(rsBokad("endDatum"))
		For dTempDate = dStartDate to dEndDate
		   Response.Write "</FONT></B></TD><TD CLASS=""tdcal""  VALIGN=""BOTTOM"">" & rsBokad("aktivitet")
		   Response.Write ", i " & rsBokad("lokal")
		   		Next

Men,men... som nu kan se blev det nu konstigt inte bara (nästa månad) juni, utan även 25:maj(dubble postat den dagen)
Vad skall jag göra?

Medlem sedan sep. 2004201 inlägg
#79

Snälla ASP-gurus, hoppas ni inte har tröttnat på mig än
Det verkar vara koden

 ElseIf Right(rsBokad("aktivitet"), 3) = "Cup" Then
	    dStartDate = Cdate(rsBokad("startDatum"))
	    dEndDate = Cdate(rsBokad("endDatum"))
		For dTempDate = dStartDate to dEndDate
		   Response.Write "</FONT></B></TD><TD CLASS=""tdcal""  VALIGN=""BOTTOM"">" & rsBokad("aktivitet")
		   Response.Write ", i " & rsBokad("lokal")
		   		Next

som inte funkar

Medlem sedan sep. 2004201 inlägg
#80

Har försökt ändra SQL-frågan till:

strSQL = "SELECT * FROM upptaget WHERE month(startDatum) = " & manad & " AND month(dTempDate)) = " & manad & " AND day(dTempDate) = " & iDag & " AND day(startDatum) = " & iDag & " ORDER by ID ASC"

Men får bara

Microsoft JET Database Engine error '80040e14'
Extra ) in query expression 'month(startDatum) = 5 AND month(dTempDate)) = 5 AND day(dTempDate) = 1 AND day(startDatum) = 1'.

/ovaasp/skrivbordskalender108.asp, line 289

rad 289: Do While Not rsBokad.EOF

270 ms totalt · 4 externa anrop · v20260731065814-full.6fe65c25
120 ms — deklarationer (db)
0 ms — hämta statistik (cache)
142 ms — hämta tråd, inlägg och bilagor (db)
126 ms — ändringar (db)