PPLksMedlem sedan sep. 2004201 inlägg 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...?
KimGMedlem sedan apr. 2002105 inlägg
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.
PPLksMedlem sedan sep. 2004201 inlägg
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
@ndersMedlem sedan juni 200032 967 inläggI 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.
KimGMedlem sedan apr. 2002105 inläggDu 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.
PPLksMedlem sedan sep. 2004201 inlägg 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"))
KimGMedlem sedan apr. 2002105 inläggVä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.
PPLksMedlem sedan sep. 2004201 inlägg
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?
J.N.Medlem sedan apr. 20031 660 inläggHEJ!
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...
PPLksMedlem sedan sep. 2004201 inlägg
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
PPLksMedlem sedan sep. 2004201 inlägg 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
- dubbelpostad träning i maj
- dubbelpostad matchi maj
- 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...
J.N.Medlem sedan apr. 20031 660 inläggHEJ!
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?
PPLksMedlem sedan sep. 2004201 inlägg 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??
SSannyWMedlem sedan jan. 2003438 inlägg 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.
PPLksMedlem sedan sep. 2004201 inlägg 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'.
SSannyWMedlem sedan jan. 2003438 inlägg 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")&";" & _
PPLksMedlem sedan sep. 2004201 inlägg
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...
SSannyWMedlem sedan jan. 2003438 inlägg 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.