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???
137 svar · 3 703 visningar · startad av PLks · sida 6 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 →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???
[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)
om "cup" kolla om
iDag = Day(rsBokad("startDatum"))
Om ja -> skriv
kolla om
iDag = Day(rsBokad("startDatum") + 1)
göra om #3 tills rsBokad("endDatum") är nådd
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
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."
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...
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:
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?
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
har ja glyckats bättre att förklara?
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
LooprsBokad.Close
rad 290:
rsBokad.Open strSQL, minCon, 3, 3
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. :)
@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
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:
@nders skrev:
Lite enkel korrläsning:
- Du saknar ett mellanslag före WHERE.
- 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.
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
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.
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
?
ASP-kod körs uppifrån och ner. Du kan inte använda variabler innan, dvs ovanför, de skapats / fått värden.
men, det får väl värde genom:
dStartDate = Cdate(rsBokad("startDatum"))
dEndDate = Cdate(rsBokad("endDatum"))
trodde iaf jag..
Har ni tippspå online-läsning i ovanstående?. Pga flyttnig är mina böcker nerpackade
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...
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.