webForumDet fria alternativet

kalender som visar matcher, tuneringar och träningar

ASP

137 svar · 3 703 visningar · startad av PLks · sida 6 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
#101

Jag fattar inte alls vad du håller på med om jag ska vara helt ärlig. Varför har du lagt in en do-loop där?

Du har heller ingen next i dina else-if-satser, varför har du tagit bort dem???

Medlem sedan sep. 2004201 inlägg
#102

[CITAT@nders]Jag fattar inte alls vad du håller på med om jag ska vara helt ärlig. Varför har du lagt in en do-loop där?
Jag latill i ren desperation, eftersom jag inte lyckas få koden förstå vad jag vill göra ( pseudokod)

  1. om "cup" kolla om

    iDag = Day(rsBokad("startDatum"))
    
  2. Om ja -> skriv

  3. kolla om

    iDag = Day(rsBokad("startDatum") + 1)
    
  4. göra om #3 tills rsBokad("endDatum") är nådd

  5. gå till nästa ElseIf

Du har heller ingen next i dina else-if-satser, varför har du tagit bort dem???

Brinkster sa´åt mig att ta bort dessa

Medlem sedan juni 200032 967 inlägg
#103

Nej, Brinkster sa inte åt dig det.

Brinkster sade, "Det är något som saknas i din kod. Indentera koden så ser du vad som saknas."

Medlem sedan sep. 2004201 inlägg
#104

med

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
			If cint(manad) = Month(dTempDate) AND iDag = Day(dTempDate) then
				Response.Write "</FONT></B></TD><TD CLASS=""tdcal""  VALIGN=""BOTTOM"">" & rsBokad("aktivitet")
				Response.Write ", i " & rsBokad("lokal")
			End If
		Next
	ElseIf Right(rsBokad("aktivitet"), 3) = "Cam" Then
		dStartDate = Cdate(rsBokad("startDatum"))
		dEndDate = Cdate(rsBokad("endDatum"))
		For dTempDate = dStartDate to dEndDate
			If cint(manad) = Month(dTempDate) AND iDag = Day(dTempDate) then
				Response.Write "</FONT></B></TD><TD CLASS=""tdcal""  VALIGN=""BOTTOM"">" & rsBokad("aktivitet")
				Response.Write ", i " & rsBokad("lokal")
			End If
		Next
	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

skrivs bara första "Eken Cup" ut...

Medlem sedan sep. 2004201 inlägg
#105

jag håller på att bli galen! Det ända jag kommer fram till att felet måste ligga i koden

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

Ovanstående kod gör helt enkelt inte det jag vill:

  1. If Right(rsBokad("aktivitet"), 3) = "Cam" Then
  2. if dTempDate = dStartDate
  3. set dTempDate = dStartDate + 1
  4. If cint(manad) = Month(dTempDate) AND iDag = Day(dTempDate) then Write
  5. set dTempDate = dStartDate + 2
  6. If cint(manad) = Month(dTempDate) AND iDag = Day(dTempDate) then Write
  7. upprepa tills dTempDate = dendDate
Medlem sedan juni 200032 967 inlägg
#106

Jag tycker det ser ut som att vid "Cup" och "Cam" körs likadan kod. Vad är det för skillnad på de två olika casen?

Är det bara "Cam"-caset det är fel på? Hur blir det? Hur vill du att det ska bli?

Medlem sedan sep. 2004201 inlägg
#107

jag måste vara dåligpå att förklara*snyft*
Jag har inget "Cam" i databasen nu, därför tjatar jag om Cup...

Hur vill du att det ska bli?

ber om ursäkt, men det har jag väl förklarat hur jag vill?
Vill båda fallen ha på samma sätt.
Som jag skrev förra gången:
För varje loop skall kollas

  1. finns dautmet i databasen?
  2. kolla vilken tabellrad händelsen hamnar på (Med "If cint(manad) = Month(dTempDate) AND iDag = Day(dTempDate)")
  3. skriv ut "Ekens Cup"
  4. ta nästa datum dvs starDate+1 -> #1 -3
  5. ta nästa datum,dvs datum = startDate+2 _> upprepa
  6. Gör detta tills startdatum =endDatum

har ja glyckats bättre att förklara?

Medlem sedan sep. 2004201 inlägg
Medlem sedan sep. 2004201 inlägg
#109

Efter att ha sökt här på forumet fick jag lite idéer från bla dessa trådarav @nders och Palle.

Jag satte igång och krearade detta

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 & ""
strSQL = strSQL & "WHERE startDatum between #" & dStartDate & "# AND #" &  dEndDate & "#"
strSQL = strSQL & "ORDER by ID startDatum ASC"
rsBokad.Open strSQL, minCon, 3, 3
      dStartDate = Cdate(rsBokad("startDatum"))
	  dEndDate = Cdate(rsBokad("endDatum"))
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
		For dDag = dstartDate To DateAdd("D", dStartDate, +DateDiff("D", dStartDate, dEndDate))
			If cint(manad) = Month(dDag) AND iDag = Day(dDag) then
				Response.Write "</FONT></B></TD><TD CLASS=""tdcal""  VALIGN=""BOTTOM"">" & rsBokad("aktivitet")
				Response.Write ", i " & rsBokad("lokal")
			End If
		Next
	ElseIf Right(rsBokad("aktivitet"), 3) = "Cam" Then
		For dDag = dstartDate To DateAdd("D", dStartDate, +DateDiff("D", dStartDate, dEndDate))
			If cint(manad) = Month(dDag) AND iDag = Day(dDag) then
				Response.Write "</FONT></B></TD><TD CLASS=""tdcal""  VALIGN=""BOTTOM"">" & rsBokad("aktivitet")
				Response.Write ", i " & rsBokad("lokal")
			End If
		Next
	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

får fel

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 & ""
strSQL = strSQL & "WHERE startDatum between #" & dStartDate & "# AND #" & dEndDate & "#"
strSQL = strSQL & "ORDER by ID startDatum ASC"
rsBokad.Open strSQL, minCon, 3, 3
dStartDate = Cdate(rsBokad("startDatum"))
dEndDate = Cdate(rsBokad("endDatum"))
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
For dDag = dstartDate To DateAdd("D", dStartDate, +DateDiff("D", dStartDate, dEndDate))
If cint(manad) = Month(dDag) AND iDag = Day(dDag) then
Response.Write "</FONT></B></TD><TD CLASS=""tdcal"" VALIGN=""BOTTOM"">" & rsBokad("aktivitet")
Response.Write ", i " & rsBokad("lokal")
End If
Next
ElseIf Right(rsBokad("aktivitet"), 3) = "Cam" Then
For dDag = dstartDate To DateAdd("D", dStartDate, +DateDiff("D", dStartDate, dEndDate))
If cint(manad) = Month(dDag) AND iDag = Day(dDag) then
Response.Write "</FONT></B></TD><TD CLASS=""tdcal"" VALIGN=""BOTTOM"">" & rsBokad("aktivitet")
Response.Write ", i " & rsBokad("lokal")
End If
Next
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

rad 290:

rsBokad.Open strSQL, minCon, 3, 3
Medlem sedan juni 200032 967 inlägg
#110

Uhm, vad får du för fel nu, sa du? Lite copy/paste-fel där kanske?

Och, jag förstår ungefär vad det är du vill ha ut. Det jag inte förstår är alla dina kodändringar "i ren desperation", som både kladdar till, och tar dig ett (minst) steg tillbaka. (...och gör det svårare för oss andra att förstå vad du håller på med.

Men det är klart, alltid lär man sig något. :)

Medlem sedan sep. 2004201 inlägg
#111

@nders skrev:

Uhm, vad får du för fel nu, sa du? Lite copy/paste-fel där kanske?

Microsoft JET Database Engine error '80040e14'
Syntax error (missing operator) in query expression 'month(startDatum) = 5 AND day(startDatum) = 1WHERE startDatum between ## AND ##'.

/ovaasp/skrivbordskalender1115.asp, line 290

@nders skrev:

Det jag inte förstår är alla dina kodändringar "i ren desperation"

Eftersom jag varken med eller utan ert hjälp lyckas lösa uppgiften,så måste jag fortsätta leta...
För faktum kvarstår att jag/vilyckas inte lista ut alla Ekens Cup på rätt datum

Medlem sedan juni 200032 967 inlägg
#112

Microsoft JET Database Engine error '80040e14'
Syntax error (missing operator) in query expression 'month(startDatum) = 5 AND day(startDatum) = 1WHERE startDatum between ## AND ##'.

/ovaasp/skrivbordskalender1115.asp, line 290

Lite enkel korrläsning:

  1. Du saknar ett mellanslag före WHERE.
  2. Variablerna dStartDate och dEndDate är tomma. Du skapar ju inte de variablerna förrän i loopen efter att du kört SQL-frågan.
Medlem sedan sep. 2004201 inlägg
#113

@nders skrev:

Lite enkel korrläsning:

  1. Du saknar ett mellanslag före WHERE.
  2. Variablerna dStartDate och dEndDate är tomma. Du skapar ju inte de variablerna förrän i loopen efter att du kört SQL-frågan.
  1. skall jag placera variablerna direkt efter SQL-frågan?
  2. är detta annars en bra lösning?

Lite förklaring till fråga b
Det är fortfarande så som ni kan se för er själva (gå tillnästa månad) att med koden

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) 
		         
End If
If 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")
End if
	rsBokad.MoveNext
Loop
    rsBokad.Close

listas endast Eken Cups första dag = 3/6 och Eken cup håller på i 4 dagar - som ni kan se här, dvs mellan 3/6 och 7/6

Medlem sedan juni 200032 967 inlägg
#114

skall jag placera variablerna direkt efter SQL-frågan?

Du kan inte använda variabler innan du har definierat dem. Dvs, ska du ha dem i SQL-frågan måste du definiera variablerna innan dess.

Jag har f.t. inte tid att analysera dina kodstycken idag, speciellt inte när indenteringen är hemsk. Lessen.

Medlem sedan sep. 2004201 inlägg
#115

speciellt inte när indenteringen är hemsk

så den är fortf hemsk...och jag som hoppades att jag blivit bättre

Du kan inte använda variabler innan du har definierat dem

med definiera menar du

dim

?

Medlem sedan juni 200032 967 inlägg
#116

ASP-kod körs uppifrån och ner. Du kan inte använda variabler innan, dvs ovanför, de skapats / fått värden.

Medlem sedan sep. 2004201 inlägg
#117

men, det får väl värde genom:

dStartDate = Cdate(rsBokad("startDatum"))
	  dEndDate = Cdate(rsBokad("endDatum"))

trodde iaf jag..

Medlem sedan sep. 2004201 inlägg
#118

Har ni tippspå online-läsning i ovanstående?. Pga flyttnig är mina böcker nerpackade

Medlem sedan sep. 2004201 inlägg
#119

Nu har jag ändrat lite tilll....

<%
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)
    

Dim strSQL
Dim dStartDate, dEndDate 

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>"
[B]minCon.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("\ovaasp\db\upptaget.mdb")[/B]
  dStartDate = Cdate(rsBokad("startDatum"))
  dEndDate = Cdate(rsBokad("endDatum"))
       
strSQL = "SELECT * FROM upptaget WHERE month(startDatum) = " & manad & " AND day(startDatum) = " & iDag & ""
strSQL = strSQL & " WHERE startDatum between #" & dStartDate & "# AND #" &  dEndDate & "#"
strSQL = strSQL & " ORDER by ID startDatum ASC"
rsBokad.Open strSQL, minCon, 3, 3
         Do While Not rsBokad.EOF

men får fel

Microsoft VBScript runtime error '800a01a8'
Object required: ''

/ovaasp/skrivbordskalender1115.asp, line 284

men har ju redan "på den raden...

Medlem sedan apr. 20031 660 inlägg
#120

HEJ!

PLks skrev:

Microsoft VBScript runtime error '800a01a8'
Object required: ''

/ovaasp/skrivbordskalender1115.asp, line 284

men har ju redan "på den raden...

Felmeddelandet betyder inte att du saknar citationstecken, du saknar ett objekt på den raden. (Fnuttar är aldrig objekt!)

Någonstans i koden har du alltså stängt, felstavat eller på annat sätt inte ett skapat objekt minCon på denna rad.

264 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2
118 ms — deklarationer (db)
0 ms — hämta statistik (cache)
142 ms — hämta tråd, inlägg och bilagor (db)
119 ms — ändringar (db)