webForumDet fria alternativet

kalender som visar matcher, tuneringar och träningar

ASP

137 svar · 3 703 visningar · startad av PLks

Medlem sedan sep. 2004201 inlägg
Frågan#1

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 dessa aktiviteter?
Mina problem:
De olika aktiviteten har olika "egenskaper":

  1. match har: starttid, sluttid, lokal
  2. match: startid, motståndare, lokal
  3. tunering:startdatum, lokal, slutdatum
Medlem sedan sep. 2004201 inlägg
#2

Tror att jag kommit på ngt...

#1. Ändra i tblKalender så att tomma fält tillåts

#2.

<%
Set minCon = Server.CreateObject("ADODB.Connection")
set rsbokad = Server.CreateObject("ADODB.Recordset")

minCon.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("****")
strSQL =" SELECT * FROM tblAktivitet ORDER by ID DESC"
rsbokad.Open strSQL, minCon, 3, 3
rsbokad.Close
  Set rsbokad = Nothing
  Set minCon = Nothing
  %>

#3. Träning

If Left(rsbokad("aktivitet"))=T Then Response.Write  rsbokad("aktivitet") & " " & rsbokad("starttid") & " - " & rsbokad("sluttid") & " i " & rsbokad("lokal")

#4 Match

If Left(rsbokad("aktivitet"))=M Then Response.Write  rsbokad("Aktivitet") & " mot " & rsbokad("motståndare") & ", i  " & rsbokad("lokal") & " kl. " & rsbokad("starttid")

Nya frågor:

  1. är ovanstående bra lösning?
  2. hur löser jag Tuneringar som sträcker sig över flera dagar?
Medlem sedan jan. 200548 inlägg
#3

Offtopic: Veckorna i din kalender stämmer inte, din kalender ligger en vecka före den aktuella veckan. =)

Medlem sedan sep. 2004201 inlägg
#4

tack för påpekandet

flexish skrev:

Offtopic: Veckorna i din kalender stämmer inte, din kalender ligger en vecka före den aktuella veckan. =)

Det borde stämma... Här är koden

ar = Request.Form("Year")
manad = Request("month")

Response.Write " v " & datePart("ww", CDate(ar & "-" & manad & "-" & iDag))

Har du och/eller ngn annan hunnit kolla på mina "topics"?

Medlem sedan apr. 20031 660 inlägg
#5

HEJ!

Om du ställer frågan som du skriver kommer du att få alla gamla också, vill du det?
Det passar inte ihop med din månadsvisa presentation heller?
Borde du inte hämta dem per den månad du är i?

Aktuella händelser, idag och framåt, hämtar du med WHERE padatum<=idag AND avdatum=>idag

DatePart:
http://www.devguru.com/Technologies/vbscript/quickref/datepart.html
Läs om FirstDayofWeek, FirstWeekofYear!

Medlem sedan juni 200032 967 inlägg
#6

Det som står här gäller alltså fortfarande. ;)

mvh

Medlem sedan sep. 2004201 inlägg
#7

tack för ditt svar

J.N. skrev:

Om du ställer frågan som du skriver kommer du att få alla gamla också, vill du det?
Det passar inte ihop med din månadsvisa presentation heller?
Borde du inte hämta dem per den månad du är i?

Stämmer bra...
Borde koden vara:

If Left(rsbokad("aktivitet"))=T where CDate(rsbokad"datum")<=idag  Then Response.Write  rsbokad("aktivitet") & " " & rsbokad("starttid") & " - " & rsbokad("sluttid") & " i " & rsbokad("lokal")
Medlem sedan juni 200032 967 inlägg
#8

Borde koden vara:

Njae, inte riktigt. Vad innehåller variablerna T och idag? Det finns inte heller något som heter where i asp, och du har glömt parentser runt fältnamnet datum.

Medlem sedan sep. 2004201 inlägg
#9

Tack för ditt svar

@nders skrev:

Vad innehåller variablerna T

Med

If Left(rsbokad("aktivitet"), 1)=T

vill jag kolla om första bokstaven från vänster är = T, detta för att kunna skriva ut rätt tid,lokal och aktivitet

Det finns inte heller något som heter where i asp

jag tog bara J.N.`s förslag..

Medlem sedan sep. 2004201 inlägg
#10

Nu har jag gjort ett försök

<%@LANGUAGE="VBSCRIPT" CODEPAGE="1252"%>
<html>
<head>
<title>Untitled Document</title>
</head>
<body>
<%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("aktivtitet"), 3) = "Trä" Then
Response.Write "<P>" & rsBokad("startDatum") & "&nbsp; " & rsBokad("akrivitet") & "&nbsp;" 
Response.Write rsBokad("startTid") & "&nbsp;-&nbsp;" 
Response.Write rsBokad("endTid") & " ,&nbsp;" & rsBokad("lokal") & "<P>"
ElseIf Left(rsBokad("aktivtitet"), 2) = "Ma" Then
Response.Write rsBokad("startDatum") & "&nbsp; " & rsBokad("akrivitet") & "&nbsp;mot &nbsp;" 
Response.Write rsBokad("Mot") & "&nbsp;i" & rsBokad("lokal") & ",&nbsp;kl&nbsp;" 
Response.Write  rsBokad("startTid") & "<P>"
Else 
For d=startDatum to endDatum
Response.Write rsBokad("startDatum") & "&nbsp;" & rsBokad("aktivitet") & "&nbsp;i&nbsp;"  
Response.Write rsBokad("lokal")
Next

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

Men inte lyckas, utan får fel:

Microsoft VBScript compilation error '800a040e'

'loop' without 'do'

/ovaasp/upptaget100.asp, line 29

Loop
^

Medlem sedan juni 200032 967 inlägg
#11

vill jag kolla om första bokstaven från vänster är = T

Om du ska jämföra med strängen T så ska du ju ha citationstecken runt T.

If Left(rsbokad("aktivitet"), 1) = "T"

Men inte lyckas, utan får fel:

Om du indenterar din kod ordentligt så är det mycket lättare att se vad du missat. (se fetmarkering):

Do While Not rsBokad.EOF
	If Left(rsBokad("aktivtitet"), 3) = "Trä" Then
		Response.Write "<P>" & rsBokad("startDatum") & "  " & rsBokad("akrivitet") & " " 
		Response.Write rsBokad("startTid") & " - " 
		Response.Write rsBokad("endTid") & " , " & rsBokad("lokal") & "<P>"
	ElseIf Left(rsBokad("aktivtitet"), 2) = "Ma" Then
		Response.Write rsBokad("startDatum") & "  " & rsBokad("akrivitet") & " mot  " 
		Response.Write rsBokad("Mot") & " i" & rsBokad("lokal") & ", kl " 
		Response.Write  rsBokad("startTid") & "<P>"
	Else 
		For d=startDatum to endDatum
			Response.Write rsBokad("startDatum") & " " & rsBokad("aktivitet") & " i "  	
			Response.Write rsBokad("lokal")
		Next
	[b]End if[/b]
	rsBokad.MoveNext
Loop

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

Tack för hjälpen ovan men jag får inte som jag vill
Med koden

Else 
		For d=startDatum to endDatum
			Response.Write rsBokad("startDatum") & " " & rsBokad("aktivitet") & " i  "  	
			Response.Write rsBokad("lokal")
		Next

vill jag ha utskriften:

2004-05-31 Bravo Cup i Solna Hallen
2004-06-01 Bravo Cup i Solna Hallen
2004-06-02 Bravo Cup i Solna Hallen
2004-06-03 Bravo Cup i Solna Hallen
2004-06-04 Bravo Cup i Solna Hallen

eftersom

startDatum = 2004-05-31
endDatum = 2004-06-04
Medlem sedan juni 200032 967 inlägg
#13

Var sätter du variablerna startDatum och endDatum då?
Och vad är det egentligen du vill få för utskrift av den koden? Du loopar ju bara utskrift av exakt samma data?

Medlem sedan sep. 2004201 inlägg
#14

@nders skrev:

Och vad är det egentligen du vill få för utskrift av den koden? Du loopar ju bara utskrift av exakt samma data?

det är inte exakt samma data, utan olika datum...

Medlem sedan juni 200032 967 inlägg
#15

Nej, det är exakt samma data. Du gör ju ingen ändring i datat i din for-loop.

Medlem sedan sep. 2004201 inlägg
#16

@nders skrev:

Nej, det är exakt samma data. Du gör ju ingen ändring i datat i din for-loop.

inte det :r ?
Jag trodde att jag gjorde... kan du hjälpa mig med en kod?

Medlem sedan juni 200032 967 inlägg
#17

Inte om jag inte vet vad du vill göra. :)

Exakt vad syftar for-loopen till? Får du inte utskriften du vill ha om du tar bort for - next?

Medlem sedan sep. 2004201 inlägg
#18

Men @nders, ursäkta... jag kan inte bättre förklara:
just nu vill jag lista återkommande händelser.

jag har en tunering med startdatum och slutdatum. Jag vill lista rakt upp och ner ...
har ju skickat med ett exempelpå hur jag vill att det skall se ut. Här kommer en gång till:

2004-05-31 Bravo Cup i Solna Hallen
2004-06-01 Bravo Cup i Solna Hallen
2004-06-02 Bravo Cup i Solna Hallen
2004-06-03 Bravo Cup i Solna Hallen
2004-06-04 Bravo Cup i Solna Hallen

Medlem sedan juni 200032 967 inlägg
#19

Men jag förstår inte varför du har lagt en for-loop i loopen där du petar ut datat från recordsetet.

Får du inte ut det du vill om du tar bort for- och next-raderna i ditt else-block?

Medlem sedan sep. 2004201 inlägg
#20

Men jag förstår inte varför du har lagt en for-loop i loopen där du petar ut datat från recordsetet.

för att tuneringen är bara angiven som en post i databasen (skickar med databasen

Får du inte ut det du vill om du tar bort for- och next-raderna i ditt else-block?

Menar du så här

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 
		
			Response.Write rsBokad("startDatum") & " " & rsBokad("aktivitet") & " i "  	
			Response.Write rsBokad("lokal")
		
	End if
	rsBokad.MoveNext
Loop

rsBokad.Close

Nej... får bara med första posten

266 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
127 ms — deklarationer (db)
0 ms — hämta statistik (cache)
136 ms — hämta tråd, inlägg och bilagor (db)
126 ms — ändringar (db)