HEJ!
Det tycker jag är ett glasklart felmeddelande!
[b]Extra )[/b] in query expression 'month(startDatum) = 5 AND month(dTempDate)[b])[/b]...
137 svar · 3 703 visningar · startad av PLks · sida 5 av 7
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 →HEJ!
Det tycker jag är ett glasklart felmeddelande!
[b]Extra )[/b] in query expression 'month(startDatum) = 5 AND month(dTempDate)[b])[/b]...
tänk att man skall vara sååå blind :r
MEN,nu blir det
Microsoft JET Database Engine error '80040e10'
No value given for one or more required parameters./ovaasp/skrivbordskalender109.asp, line 289
dTempdate är ju inget fält i tabellen, utan en variabel i ASP-koden.
@nders skrev:
dTempdate är ju inget fält i tabellen, utan en variabel i ASP-koden.
det stämmer ju förstås...
Har du ngra förslag på lösning av mitt problem?
Nix, för jag förstår inte varför du ska ha med dTempDate i SQL-frågan, eftersom det är en variabel som skapas i ditt Else-case i asp-koden.
@nders, nu menade jag problemet med varför det blir så konstigt i juni ???
dvs
fungerande kod
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")
Else
Response.Write "</FONT></B></TD><TD CLASS=""tdcal"" VALIGN=""BOTTOM"">" & rsBokad("aktivitet")
Response.Write ", i " & rsBokad("lokal")
Response.Write "</FONT></B></TD><TD CLASS=""tdcal"" VALIGN=""BOTTOM"">" & rsBokad("aktivitet")
Response.Write " i "
Response.Write rsBokad("lokal")
End if
rsBokad.MoveNext
Loop
Ej korrekt fungerande kod
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
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
Else
Response.Write "</FONT></B></TD><TD CLASS=""tdcal"" VALIGN=""BOTTOM"">" & rsBokad("aktivitet")
Response.Write ", i " & rsBokad("lokal")
Response.Write "</FONT></B></TD><TD CLASS=""tdcal"" VALIGN=""BOTTOM"">" & rsBokad("aktivitet")
Response.Write " i "
Response.Write rsBokad("lokal")
End if
rsBokad.MoveNext
Loop
I den ej fungerande koden inleder du med en elseif först i loopen. Du kan inte ha någon elseif om du inte har någon if som den hör ihop med.
Och sedan tror jag att jag sagt det tusen gånger i denna tråd: indentera, indentera, indentera! Indenterar man inte blir det bara kladd och massor av slarvfel.
Bra indentering:
If detena = detandra then
for i = 0 to 6
if detfjärde = detfemte then
Response.write "jodå!"
end if
next
Else
if foo = "bar" then
set objRS = objConn.execute ("select * from foobar")
while not objRS.EOF then
if något = någotannat then
' gör något
end if
objRS.Movenext
wend
End if
End if
Svårläst:
If detena = detandra then
for i = 0 to 6
if detfjärde = detfemte then
Response.write "jodå!"
end if
next
Else
if foo = "bar" then
set objRS = objConn.execute ("select * from foobar")
while not objRS.EOF then
if något = någotannat then
' gör något
end if
objRS.Movenext
wend
End if
Indenterar man ordentligt är det extremt mycket lättare att läsa koden, och lättare att hitta slarvfel, som exempelvis att man missar att påbörja eller avsluta ett block, eller om saker och ting påbörjas / avslutas på fel ställe.
tillbaka till civilisationen från landet...
@nders: jag försöker indentera, menmisslyckad tydlige...
Tycker det är svårt med indentering...
Vet inte om detta du menade (försökt indentera)
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 det blir konstigt
Orsaken till #1 och #2 verkar att efter att kollat If och ElseIf satserna, så skrivs Else ut även om If eller ElseIf uppfylls...
Om jag inte tolkar allt helt fel så borde väl:
End If
If Right(rsBokad("aktivitet"), 3) = "Cup" Then
vara:
ElseIf Right(rsBokad("aktivitet"), 3) = "Cup" Then
Jo, men här har du ju en if-sats överst? Om du ändrar till ElseIf där jag föreslår så skulle ju hela if-satsblocket se ut så här (start med if-sats alltså):
If Left(rsBokad("aktivitet"), 3) = "Trä" then
...
ElseIf Left(rsBokad("aktivitet"), 2) = "Ma" Then
...
ElseIf Right(rsBokad("aktivitet"), 3) = "Cup" Then
...
ElseIf Right(rsBokad("aktivitet"), 3) = "Cam" Then
...
Else
...
End if
då förstår jag....
För att återkomma till indentering.. är det så här du menar?
If Left(rsBokad("aktivitet"), 3) = "Trä" then
...
ElseIf Left(rsBokad("aktivitet"), 2) = "Ma" Then
...
ElseIf Right(rsBokad("aktivitet"), 3) = "Cup" Then
...
ElseIf Right(rsBokad("aktivitet"), 3) = "Cam" Then
...
Else
...
End if
Nej, det jag menar är att man ska hålla ihop de olika blocken så man ser vad som tillhör vad. Ett till exempel:
[kod]If Left(rsBokad("aktivitet"), 3) = "Trä" then
Response.write "trä"
ElseIf Left(rsBokad("aktivitet"), 2) = "Ma" Then
Response.write "ma"
if ett = tva then
Response.write "foo"
end if
ElseIf Right(rsBokad("aktivitet"), 3) = "Cup" Then
Response.write "cup"
ElseIf Right(rsBokad("aktivitet"), 3) = "Cam" Then
Response.write "cam"
Else
Response.write "annat"
End if
Efter att fyllt i med div Next som Brinkster sa´till se koden ut så här
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
så blir det bara första dagen av Eken Cup utskrivet...
Efteratt återigen ha indenterat din kod så ser man lätt att det saknas en next i din else-sats:
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")
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")
[b]Next[/b]
End if
rsBokad.MoveNext
Loop
rsBokad.Close
vet inte om jag redigerade,men faktum kvarstar ;)
Har provat med
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
[B]Do While NOT dTempDate = dEndDate[/B]
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
ElseIf Right(rsBokad("aktivitet"), 3) = "Cam" Then
dStartDate = Cdate(rsBokad("startDatum"))
dEndDate = Cdate(rsBokad("endDatum"))
For dTempDate = dStartDate to dEndDate
[B]Do While NOT dTempDate = dEndDate[/B]
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
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
Microsoft VBScript compilation error '800a03fb'
Expected 'Loop'
/ovaasp/skrivbordskalender116.asp, line 310
ElseIf Right(rsBokad("aktivitet"), 3) = "Cam" Then
^