Då innehåller endDatum NULL. Varför? Ska du verkligen vara i Else-delen då?
kalender som visar matcher, tuneringar och träningar
137 svar · 3 703 visningar · startad av PLks · sida 3 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 →@nders skrev:
Då innehåller endDatum NULL. Varför?
Japp. Det är bara de poster som har återkommande aktiviteter, dvs poster där rsBokat("aktivitet") är varken
Left(rsBokad("aktivitet"), 2) = "Ma"
eller
Left(rsBokad("aktivitet"), 3) = "Trä"
som har ett värde för endDatum. De som slutar
samma dag behöver ju inte... Där lämnas fältet tomt (=oifyllt)
Jag har (hoppas jag) tillåtit NULL i access 2003 database, genom att sätta fältets egenskaper till icke obligatorisk
@nders skrev:
Ska du verkligen vara i Else-delen då?
Var kan jag vara istället?
det jag gör ju (hoppas jag):
- kollar om datumet finns i databasen
- Om ja, kolla om det är träning --> skriv ut
- Om ja, kolla om match --> skriv ut
- Om ja, skriv ut aktiviteten samtliga dagar som den inträfar
När du har lagt koden som den ligger, och du får felmeddelandet som du får, så innebär det att du kommer in i Else-delen trots att du inte har något endDatum ifyllt i tabellen. Det känns som att antingen är det fel i if-satsen, eller så är det fel i datat.
Jag förstår inte heller din yttersta loop. Loopar du alltså igenom hela koden en gång per dag? Då skulle jag ta bort if-satsen i loopen som kontrollerar om det är rätt månad och rätt dag, i så fall skriv ut, och lägga till dag och månad som villkor i SQL-frågan istället. Det finns ju ingen som helst anledning att hämta exakt samma data 31 gånger...
@nders skrev:
Jag förstår inte heller din yttersta loop. Loopar du alltså igenom hela koden en gång per dag?
Jag loopar bara igenom när sidan laddas:
Som det är nu så har jag ju en skrivbordskalender . Det nya är att jag lagt till en databas, upptaget.mdb (acces 2003).
När sidan laddas, dvs innan sidan visas vill jag
- kolla om det finns ngra poster för aktuell månad
- Om ja --> kolla om träning --> skriv ut i rätt tabellrad ( dvs rätt datum
- Om ja, kolla om match --> skriv ut i rätt tabellrad ( dvs rätt datum)
- Om ja --> skriv ut den återkommande aktiviteten -->skriv ut i rätt tabellrad ( dvs rätt datum)
- Om nej skriv ut kalendern som det är idag
Är det lättare att förstå nu?
Det känns som att antingen är det fel i if-satsen, eller så är det fel i datat.
Jag bifogar databasen. Den är ifylld direkt i access. Tänkte först få det hela att fungera innan jag kokar ihop en formulär
Jag loopar bara igenom när sidan laddas:
Jo, men du loopar en gång per dag i aktuell månad. Så när sidan laddas öppnar du samma recordset och ställer samma SQL-fråga 31 gånger (om det nu är så många dagar i aktuell månad), och det kan ju inte vara rätt.
det konstiga är att det funkar när jag bara skall skriva ut rakt av fr db.
lägga till dag och månad som villkor i SQL-frågan istället.
kan du ge ett enkelt exempel på hur detta kunde se ut?
Förestän verkar det vara fel med datan oxå.
Koden som funkade så bra igår innan uppdatering av databasen
<%
Session.LCID = 1053
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("aktivitet"), 3) = "Trä" Then
Response.Write "<P>" & rsBokad("startDatum") & " " & rsBokad("aktivitet") & " "
Response.Write FormatDateTime(rsBokad("startTid"), 4) & " - "
Response.Write FormatDateTime(rsBokad("endTid"), 4) & " , " & 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 FormatDateTime(rsBokad("startTid"), 4) & "<P>"
Else
dStartDate = Cdate(rsBokad("startDatum"))
dEndDate = Cdate(rsBokad("endDatum"))
For dTempDate = dStartDate to dEndDate
Response.Write dTempDate & " " & rsBokad("aktivitet") & " i "
Response.Write rsBokad("lokal") & "<BR>"
Response.Write Month(dTempDate) & " " & Day(dTempDate) & "<BR>"
Next
End if
rsBokad.MoveNext
Loop
rsBokad.Close
Set rsBokad = Nothing
minCon.Close
Set minCon = Nothing
%>
>
Samma fel
Microsoft VBScript runtime error '800a005e'
Invalid use of Null: 'Cdate'
/ovaasp/upptaget100.asp, line 26
blir mer och mer mysko...
Då skulle jag i alla börja med att felsöka datan och se till så den är riktig. Om inte datan är rätt så är det svårt att rätta till scriptet, så att säga.
Nu har jag hittat 2 fel i databasen och rättat till dessa, men resultatet bilr inte som igår*snyft*
Igår fick jag utskrift på
- träning
- matcher
- återkommande aktivitet
Idag med koden:
<%
Session.LCID = 1053
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("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
dStartDate = Cdate(rsBokad("startDatum"))
dEndDate = Cdate(rsBokad("endDatum"))
For dTempDate = dStartDate to dEndDate
Response.Write "<BR>" & dTempDate & " " & rsBokad("aktivitet") & " i "
Response.Write rsBokad("lokal") & "<P>"
Next
End if
rsBokad.MoveNext
Loop
rsBokad.Close
Set rsBokad = Nothing
minCon.Close
Set minCon = Nothing
%>
2005-06-03 Eken Cup i Solna
2005-06-04 Eken Cup i Solna
2005-06-05 Eken Cup i Solna
2005-06-06 Eken Cup i Solna
2005-06-07 Eken Cup i Solna
Microsoft VBScript runtime error '800a005e'
Invalid use of Null: 'Cdate'
/ovaasp/upptaget103.asp, line 26
Do Until rsBokad.EOF
Fattar inte vad som har hänt med databasen*river sitt hår*
Funkade ju kanon igår....
Du kan ju alltid kolla så att det som kommer ut stämmer eller. Det ser ju ut som du får ut ett värde som är helt tomt i databasen...
If IsDate(rsBokad("startDatum")) Then
dStartDate = Cdate(rsBokad("startDatum"))
Else
dStartDate = "rsBokad('startDatum') är i fel format"
End If
If IsDate(rsBokad("endDatum")) Then
dEndDate = Cdate(rsBokad("endDatum"))
Else
dEndDate = "rsBokad('endDatum') är i fel format"
End If
Det blir ju inget felmeddelande alls när jag kollae på länken
http://www45.brinkster.com/ovaasp/upptaget103.asp skrev:
2005-06-03 Eken Cup i Solna
2005-05-25 Avslutning i Enskedehallen
2005-05-21 Match mot Brahe BBK iBrahehallen, kl 15:00:002005-05-20 Träning 17:00:00 - 18:30:00 , Västbodaskolan
2005-05-18 Träning 18:00:00 - 19:30:00 , Västbodaskolan
2005-05-16 Träning 17:00:00 - 18:00:00 , Västbodaskolan
Web Hosting by Brinkster
Skulle tro att du måste gå till internet explorers inställningar och välja uppdatera sidan varje gång den besöks eller starta om datorn eller tömma cachen i explorer ELLER mozilla eller vad du nu använder dig av
Det blir ju inget felmeddelande alls när jag kollae på länken
jag håller ju på att jobba med sidan...
det verkar som konstruktionen för att lista återkommande händelser
Else
dStartDate = Cdate(rsBokad("startDatum"))
dEndDate = Cdate(rsBokad("endDatum"))
For dTempDate = dStartDate to dEndDate
Response.Write "<BR>" & dTempDate & " " & rsBokad("aktivitet") & " i "
Response.Write rsBokad("lokal") & "<P>"
Next
som inte funkar...
Och du har dubbelkollat så alla poster vars aktivitet inte börjar med trä eller ma har giltiga datum i både startDatum och endDatum?
Vilken tabbe av mig... Du @nders är en klippa
Och du har dubbelkollat så alla poster vars aktivitet inte börjar med trä eller ma har giltiga datum i både startDatum och endDatum?
Sedan igår har ju tillkommit avslutningen i Enskedehallen, detta saknar ju slutdatum*klantiga mig*
Nu har jag ändrat lite
Else If Right(strText, 3)= "Cup" Then
dStartDate = Cdate(rsBokad("startDatum"))
dEndDate = Cdate(rsBokad("endDatum"))
For dTempDate = dStartDate to dEndDate
Response.Write "<BR>" & dTempDate & " " & rsBokad("aktivitet") & " i "
Response.Write rsBokad("lokal") & "<P>"
Next
End If
Else
For d=startDatum to endDatum
Response.Write rsBokad("startDatum") & " " & rsBokad("aktivitet") & " i "
Response.Write rsBokad("lokal") & "<BR>"
Next
End if
rsBokad.MoveNext
Loop
rsBokad.Close
Set rsBokad = Nothing
minCon.Close
Set minCon = Nothing
men nu vill "de" haMicrosoft VBScript compilation error '800a040e'
'loop' without 'do'
/ovaasp/upptaget103.asp, line 38
Loop
^
Ska verkligen det feta vara där?
Else If Right(strText, 3)= "Cup" Then
dStartDate = Cdate(rsBokad("startDatum"))
dEndDate = Cdate(rsBokad("endDatum"))
For dTempDate = dStartDate to dEndDate
Response.Write "<BR>" & dTempDate & " " & rsBokad("aktivitet") & " i "
Response.Write rsBokad("lokal") & "<P>"
Next
[b]End If[/b]
Else
For d=startDatum to endDatum
Response.Write rsBokad("startDatum") & " " & rsBokad("aktivitet") & " i "
Response.Write rsBokad("lokal") & "<BR>"
Next
End if
rsBokad.MoveNext
Loop
rsBokad.Close
Set rsBokad = Nothing
minCon.Close
Set minCon = Nothing

