webForumDet fria alternativet

kalender som visar matcher, tuneringar och träningar

ASP

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

Aj f**n, då är det väl fortfarande detta som

@nders skrev:

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.

spökar. Kan beropåatt jag aldrog riktigt fattat vad han menar...?

Medlem sedan apr. 2002105 inlägg
#122

PLks skrev:

Aj f**n, då är det väl fortfarande detta som

@nders skrev:

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.

spökar. Kan beropåatt jag aldrog riktigt fattat vad han menar...?

Ex.

<%

strVariabel = "Hej"  'Här skapar jag en variabel med värdet Hej
Response.Write strVariabel 'Här använder jag samma variabel och skriver ut dess värde.

%>

Svårare än så är det inte.
Du måste ge en variabel ett värde innan du kan använda den.

Medlem sedan sep. 2004201 inlägg
#123

KimG skrev:

Du måste ge en variabel ett värde innan du kan använda den.

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

Men det gör jag väl i ovanstående med

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
Medlem sedan juni 200032 967 inlägg
#124

I SQL-frågan använder du variablerna dStartDate och dEndDate, trots att du inte skapar dem förrän efter det i koden!

Jag lämnar detta nu, jag pratar bara förbi dig.

Medlem sedan apr. 2002105 inlägg
#125

Du använder variablarna i din SQL fråga innan de fått något värde.

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"

Här använder du variablarna, dStartDate och dEndDate.

rsBokad.Open strSQL, minCon, 3, 3

Här kör du SQL frågan mot databasen

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

Här ger du variablerna, som du använt i din SQL fråga, ett värde.

Eftersom du sätter variablernas värde efter du använder dem, finns inget värde i variablerna och därmed genererar det fel.

Medlem sedan sep. 2004201 inlägg
#126

När jag försöker du sätter variablernas värde före

Dim strSQL
Dim dStartDate, dEndDate 
dStartDate = Cdate(rsBokad("startDatum"))
dEndDate = Cdate(rsBokad("endDatum"))

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>"
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

så får jag

Microsoft VBScript runtime error '800a000d'
Type mismatch: 'rsBokad'

/ovaasp/skrivbordskalender1115.asp, line 280

rad 280

dStartDate = Cdate(rsBokad("startDatum"))
Medlem sedan apr. 2002105 inlägg
#127

Värdet i dina variabler, dStartDate och dEndDate, kommer ju från databasen.

Eftersom du inte öppnat databasen och hämtat värdet för variablerna ännu, så får du detta fel.

Din kod just nu ser ut så här:
1. dStartDate och dEndDate får ett värde ur databasen, med objektet rsBokad
2. Du öppnar databasen.
3. Du kör en SQL sats mot databasen och skapar objektet rsBokad.

Detta fungerar inte. Samma sak gäller för objekt som för variabler i ASP. Du kan inte använda dem innan de har fått ett värde som kan användas.

Medlem sedan sep. 2004201 inlägg
#128

Detta fungerar inte. Samma sak gäller för objekt som för variabler i ASP. Du kan inte använda dem innan de har fått ett värde som kan användas.

att det inte funkar har jag märkt...
Har försökt flyttta coh byta plats på dessa 2 variabler, menkan inte hitta deras rätta plats..
Var skall de vara?

Medlem sedan apr. 20031 660 inlägg
#129

HEJ!

Det ska inte vara någonstans, i alla fall inte i sin nuvarande form.

Som KimG skriver, kan du inte fylla variablerna med värden ur ett recordset.

Eftersom jag knappast kan säga att jag följt med eller förstått något i alla turer denna tråd har gått, ger jag generella råd för hur du ska få en datum dit:
- sätt en utgångsdatum
- spara undan föregående datum
- programmera om
- lös uppgiften på annat sätt

Passar också på att skriva att inlägget http://www.webforum.nu/showthread.php?s=&postid=1049017#post1049017 var fel, du skapar ju objektet i den raden du markerade, vilket jag trodde var line 284, eftersom den var markerad...

Medlem sedan sep. 2004201 inlägg
#130

J.N skrev:

lös uppgiften på annat sätt

då är vi tillbaka ngra steg... varför jag inte kan skriva ut händelse med start och slutdatum..
inlägg
I denna post skrivs iaf alla post ut även om det är på samma rad… i denna kod skrivs bara först Eken Cup ut.. Inlägg

Medlem sedan sep. 2004201 inlägg
#131

Snälla ni hjälp mig *desperat* kan varken sova, äta eller motsv.
Denna kod är det bästa jag har kommit fram till

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

Men även denna kod har sina brister som ni kan se

  1. dubbelpostad träning i maj
  2. dubbelpostad matchi maj
  3. Alla 5 Ekens Cup listade, men inte på rätt dag

Nu ha rjag stirrat i timmar på koden, utan att varken upptäcka fel, eller ha idéer om hur ändra...

Medlem sedan apr. 20031 660 inlägg
#132

HEJ!

Kontrollera när du skriver ut första posten när det blir dubbelt varför den skriver ut en till. Av någon anledning får du dubbla poster där, vilket är fel.

Är det fel i hämtningen?
Är det fel i visningen?
Är det fel i databasen?

Medlem sedan sep. 2004201 inlägg
#133

snälla J.N det är ju bla. det jag har försökt senaste 20 timmarna.
Kan ngn förbarma sig över koden?

Fast dubbel-postningen är ju bara en del av problemet...
Sedan finn sju också #3 och varför inte Ekens Cuphamnar på rätt datum??

Medlem sedan jan. 2003438 inlägg
#134

Har ändrat lite i en kalender som jag hade här och gjort om den lite mot dina önskemål. Där e skillnader och databas uppbyggnaden ser ut så här:

ID (räknare)
startdatum
slutdatum
frantid
tilltid
rubrik
detalj

Vilket betyder att du får skriva Rubrik t ex MATCH, TRÄNING, CUP.

Sedan under detalj så fyller man i typ,
borta match mot IBK Bollfint, samling 12:00

Om du sedan vill berätta i vilken "lokal" som träning eller match skall hållas så kan du ganska enkelt styra det från formuläret istället då du uppdaterar databasen.

Även funktionen med Första Maj osv. måste läggas till i scriptet.

Hoppas det kan hjälpa dig lite i strävan mot ditt slutliga kalender mål.

Medlem sedan sep. 2004201 inlägg
#135

tyvärr får jag ej din lösning att fungera.

När jag laddar upp dina filer till brinkster (site.mdb, calendeer.asp och nameday.inc) får jag följande fel

Microsoft OLE DB Provider for ODBC Drivers error '80004005'

[Microsoft][ODBC Microsoft Access Driver]General error Unable to open registry key 'Temporary (volatile) Jet DSN for process 0x1e8 Thread 0x190 DBC 0xcccee8c Jet'.

Medlem sedan jan. 2003438 inlägg
#136

Såg ett fel, du måste ändra i calender.asp gjort ett slarv fel och missat ändra namnet på databaskopplingen.

Ändra databas kopplingen till detta:

          "Dbq=" & Server.MapPath("site.mdb")&";" & _
Medlem sedan sep. 2004201 inlägg
#137

Såg ett fel, du måste ändra i calender.asp gjort ett slarv fel och missat ändra namnet på databaskopplingen.

detta löste ej problemet...

Medlem sedan jan. 2003438 inlägg
#138

Har du ändrat på något? Testade precis igen med att tömma databasen och se om det var pga att det fattades fält, men icke.

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