Avatar billede martin86 Nybegynder
13. juli 2005 - 00:54 Der er 26 kommentarer og
1 løsning

Kalender med database!.

Hej Eksperter....

Jeg har kopieret en gratis kalender fra activedeveloper lavet af Dennis Knappe, mit mål er at lave en kalender hvor de datoer hvor der er en "event" linker til en anden side .....

her er min kode:

<%set Conn = server.createobject("ADODB.Connection")
dsn = "DRIVER={Microsoft Access Driver (*.mdb)}; "
dsn = dsn & "DBQ=" & server.mappath("database.mdb")
Conn.open dsn

For y = 1 to 6
  If blnLast <> True Then
    Response.Write "<tr>"
    For x = 1 to 7
      Response.Write "<td align=center>"
      intLoopDay = intLoopDay + 1

      If intLoopDay >= intFirstDay Then
        dtmCurDate = DateAdd("d", intLoopDay-intFirstDay, dtmFirstDate)

        If Month(dtmCurDate) = Month(dtmFirstDate) Then

          If dtmCurDate = dtmToday Then
            Response.Write "<strong><font color='#FF0000'>"
          End If

                            Sqlevent = "Select * from datoer where dag=" & dtmtoday
                            Set datoer = Conn.Execute(Sqlevent) <---- linie 70

                                if datoer="" then

                      Response.Write Day(dtmCurDate)
                      Response.Write "</strong></td>"

                                else

                      Response.Write "<strong><font color='#0000FF'><a href='mode=vis&id="& datoer("id") &"'>"       
                      Response.Write Day(dtmCurDate)
                      Response.Write "</a></font></strong></td>"                               

                                end if

          blnLast = False

        Else
          Response.Write "-</td>"
          blnLast = True
        End If

      Else
        Response.Write "-</td>"
        blnLast = True

      End if

    Next

  End If

Next

Conn.Close
set Conn = Nothing%>


Og her er min fejl:

Error Type:
Microsoft OLE DB Provider for ODBC Drivers (0x80040E10)
[Microsoft][ODBC Microsoft Access Driver] Too few parameters. Expected 1.
kalender.asp, line 70
Avatar billede nielle Nybegynder
13. juli 2005 - 06:47 #1
Sqlevent = "SELECT * FROM datoer WHERE dag=#" & dtmtoday & "#"
Avatar billede busschou Praktikant
13. juli 2005 - 07:28 #2
som nielle skriver
i access gælder altid følgende
omkring datoer skal der #
omkring strenge skal der '
omkring tal skal der    <-- ingenting :o)
Avatar billede busschou Praktikant
13. juli 2005 - 07:56 #3
og så skal dtmtoday i øvrigt også være sat :o)
Avatar billede martin86 Nybegynder
13. juli 2005 - 11:50 #4
busschou ->

dtmtoday er sat, jeg havde bare ikke skrevet den med:

<%
dtmDate = Request.QueryString("date")
dtmToday = Date

If dtmDate = "" Then
  dtmDate = Date
Else
  dtmDate = CDate(dtmDate)
End if

intYear = Year(dtmDate)
strMonth = MonthName(Month(dtmDate))
intDayOfMonth = Day(dtmDate)
dtmFirstDate = DateAdd("d", (-intDayOfMonth)+1, dtmDate)
intFirstDay = Weekday(dtmFirstDate, vbMonday)
%>

nielle -> den giver stadig fejl ...
Avatar billede busschou Praktikant
13. juli 2005 - 12:57 #5
gør det nogen forskel at du nogen steder bruger dtmToday men andre bruger dtmtoday ?
prøv gøre det med stort i sql sætningen også
Avatar billede busschou Praktikant
13. juli 2005 - 12:57 #6
altså
Sqlevent = "SELECT * FROM datoer WHERE dag=#" & dtmToday & "#"
Avatar billede martin86 Nybegynder
13. juli 2005 - 13:00 #7
busschou -> nu ser min kode sådan ud...

<%set Conn = server.createobject("ADODB.Connection")
dsn = "DRIVER={Microsoft Access Driver (*.mdb)}; "
dsn = dsn & "DBQ=" & server.mappath("../database.mdb")
Conn.open dsn

For y = 1 to 6
  If blnLast <> True Then
    Response.Write "<tr>"
    For x = 1 to 7
      Response.Write "<td align=center>"
      intLoopDay = intLoopDay + 1

      If intLoopDay >= intFirstDay Then
        dtmCurDate = DateAdd("d", intLoopDay-intFirstDay, dtmFirstDate)

        If Month(dtmCurDate) = Month(dtmFirstDate) Then

          If dtmCurDate = dtmToday Then
            Response.Write "<strong><font color='#FF0000'>"
          End If

        Sqlevent = "SELECT * FROM datoer WHERE dag=#" & dtmToday & "#"
        Set datoer = Conn.Execute(Sqlevent)

            if datoer="" then  <----- LINIE 73

            Response.Write Day(dtmCurDate)
                  Response.Write "</strong></td>"

            else

                  Response.Write "<strong><font color='#0000FF'><a href='mode=vis&id="& datoer("id") &"'>"       
            Response.Write Day(dtmCurDate)
                  Response.Write "</a></font></strong></td>"                               

            end if

          blnLast = False

        Else
          Response.Write "-</td>"
          blnLast = True
        End If

      Else
        Response.Write "-</td>"
        blnLast = True

      End if

    Next

  End If

Next

Conn.Close
set Conn = Nothing%>


og får denne fejlmelding:

Error Type:
Microsoft VBScript runtime (0x800A000D)
Type mismatch
/klassehhbdk/hh3b/temp/kalender2222.asp, line 73
Avatar billede busschou Praktikant
13. juli 2005 - 13:03 #8
det er jo klart
Du finder jo en masse records i din tabel
Derfor skal du jo loebe dem igennem paa en maade
Hvis der kun er een saa skal du sige
If Not datoer.Eof
Avatar billede martin86 Nybegynder
13. juli 2005 - 13:05 #9
så får jeg en ny fejl...

        Sqlevent = "SELECT * FROM datoer WHERE dag=#" & dtmToday & "#"
        Set datoer = Conn.Execute(Sqlevent)

            If Not datoer.Eof then

            Response.Write Day(dtmCurDate)
                  Response.Write "</strong></td>"

            else

                  Response.Write "<strong><font color='#0000FF'><a href='mode=vis&id="& datoer("id") &"'>"       
            Response.Write Day(dtmCurDate)
                  Response.Write "</a></font></strong></td>"                               

            end if


fejlen:
Error Type:
(0x80020009)
Exception occurred.
/klassehhbdk/hh3b/temp/kalender2222.asp, line 80
Avatar billede martin86 Nybegynder
13. juli 2005 - 13:06 #10
hvad skal jeg sige hvis der kan være flere?
Avatar billede busschou Praktikant
13. juli 2005 - 13:09 #11
hvis der er flere laver man en løkke
Jeg bruger selv altid do while
--
Set rs = conn.execute("Select blablabla")
Do While Not rs.Eof
  //det der skal gøres
  rs.movenext
loop
--
Evt hvis der skal gøres noget hvis der ingen records er så
--
If Not rs.Eof then
  Do While Not rs.Eof
    //det der skal gøres
    rs.movenext
  loop
Else
  //det der skal gøres hvis der ikke er nogen records
end if
Avatar billede busschou Praktikant
13. juli 2005 - 13:15 #12
den sidste fejl du giver er ikke særlig sigende, hvor er linje 80?

En anden ting der slår mig er at du sætter dtmToday = Date, og denne retter du ikke igen. Du har en løkke fra 1-6 og en fra 1-7, dvs 35 gange slår du op i databasen for at finde id på dags dato, det kunne du undgå ved at lægge opslaget uden for løkkerne. Men det kan du jo tænke over :o)
Avatar billede busschou Praktikant
13. juli 2005 - 13:17 #13
min sidste kommentar skal du vist ikke tage dig af alligevel ..sorry ;o)
Avatar billede martin86 Nybegynder
13. juli 2005 - 13:19 #14
hehe ja jeg bliver i hvert fald nød til at tænke over det ...

fejlen er væk igen efter jeg brugte det sidste du skrev ... nu vises siden uden fejl men jeg kan ikke få siden til at linke hvis der er en post i databasen med den på gældende dato...
Avatar billede busschou Praktikant
13. juli 2005 - 13:19 #15
hvilken linje var 80?
kan det være det samme igen med at datoer("id") måske skal være datoer("Id") ?
Jeg hader fejlmeddelelsen "Exception occurred" , det kan jo være næsten hvad som helst :o/
Avatar billede martin86 Nybegynder
13. juli 2005 - 13:20 #16
kan jeg faktisk ikke huske .... for den vær væk efter jeg ændrede min kode ..

den ser iøvrigt sådan ud nu:

        Sqlevent = "SELECT * FROM datoer WHERE dato=#" & dtmToday & "#"
        Set datoer = Conn.Execute(Sqlevent)

If Not datoer.Eof then
  Do While Not datoer.Eof

                  Response.Write "<strong><font color='#0000FF'><a href='mode=vis&id="& datoer("id") &"'>"       
                        Response.Write Day(dtmCurDate)
                  Response.Write "</a></font></strong></td>"   

    datoer.movenext
  loop
Else

                        Response.Write Day(dtmCurDate)
                    Response.Write "</strong></td>"
                           
end if
Avatar billede busschou Praktikant
13. juli 2005 - 13:22 #17
ok siger den så stadig fejl ... eller virker det ?
Avatar billede martin86 Nybegynder
13. juli 2005 - 13:23 #18
det virker helt fint, eller dvs. at siden viser kalenderen som den skal men de daoter der skulle være links er alm. tal.....
Avatar billede busschou Praktikant
13. juli 2005 - 13:28 #19
er det ikke fordi det kun er den aktuelle dag du laver til et link? eller har jeg misforstået noget?
prøv smide hele koden i sammenhæng evt
Avatar billede martin86 Nybegynder
13. juli 2005 - 13:31 #20
Jeg vil linke til de dage hvor der er en begivenhed, begivenhederne er gemt i databasen...


her er hele koden:


<html>

<head>
<title>Kalender</title>
<meta name="Generator" content="Stone's WebWriter 4">
</head>

<body>

<%
dtmDate = Request.QueryString("date")
dtmToday = Date

If dtmDate = "" Then
  dtmDate = Date
Else
  dtmDate = CDate(dtmDate)
End if

intYear = Year(dtmDate)
strMonth = MonthName(Month(dtmDate))
intDayOfMonth = Day(dtmDate)
dtmFirstDate = DateAdd("d", (-intDayOfMonth)+1, dtmDate)
intFirstDay = Weekday(dtmFirstDate, vbMonday)
%>


<table cellspacing="0" cellpadding="2" border="0" valign="top" style="border: #111111 1px solid">
    <tr>
        <td colspan="7" align="center" style="background-color: #111111; font: 9pt Verdana; color: #ffffff;">

<%=strMonth%>&nbsp;<%=intYear%>

        </td>
    </tr>

    <tr>

        <td align="center">Man</td>
        <td align="center">Tir</td>
        <td align="center">Ons</td>
        <td align="center">Tor</td>
        <td align="center">Fre</td>
        <td align="center">Lør</td>
        <td align="center">Søn</td>
    </tr>


<%set Conn = server.createobject("ADODB.Connection")
dsn = "DRIVER={Microsoft Access Driver (*.mdb)}; "
dsn = dsn & "DBQ=" & server.mappath("../database.mdb")
Conn.open dsn

For y = 1 to 6
  If blnLast <> True Then
    Response.Write "<tr>"
    For x = 1 to 7
      Response.Write "<td align=center>"
      intLoopDay = intLoopDay + 1

      If intLoopDay >= intFirstDay Then
        dtmCurDate = DateAdd("d", intLoopDay-intFirstDay, dtmFirstDate)

          If Month(dtmCurDate) = Month(dtmFirstDate) Then

          If dtmCurDate = dtmToday Then
            Response.Write "<strong><font color='#FF0000'>"
          End If

        Sqlevent = "SELECT * FROM datoer WHERE dato=#" & dtmToday & "#"
        Set datoer = Conn.Execute(Sqlevent)

            If Not datoer.Eof then
                Do While Not datoer.Eof
                  Response.Write "<strong><font color='#0000FF'><a href='mode=vis&id="& datoer("id") &"'>"       
                        Response.Write Day(dtmCurDate)
                  Response.Write "</a></font></strong></td>"   
            datoer.movenext
                  loop
            Else
                        Response.Write Day(dtmCurDate)
                    Response.Write "</font></strong></td>"
            End if



          blnLast = False

        Else
          Response.Write "-</td>"
          blnLast = True
        End If

      Else
        Response.Write "-</td>"
        blnLast = True

      End if

    Next

  End If

Next

Conn.Close
set Conn = Nothing%>
</td></tr>

<tr>

<td bgcolor="#fofofo" colspan="3"><b>
<a href="kalender2222.asp?date=<%=DateAdd("m",-1,dtmFirstDate)%>">Forrige</a></b></td>

<td bgcolor="#fofofo">&nbsp;</td>

<td bgcolor="#fofofo" colspan="3" align="right"><b>
<a href="kalender2222.asp?date=<%=DateAdd("m",1,dtmFirstDate)%>">Næste</a></b></td>

</tr>
</table>

</center>



</body>
</html>
Avatar billede busschou Praktikant
13. juli 2005 - 13:34 #21
er problemet ikke denne
Sqlevent = "SELECT * FROM datoer WHERE dato=#" & dtmToday & "#"
Fordi dtmToday vil altid være 13 juli (dags dato)
Mener du ikke dtmCurDate ?
altså
Sqlevent = "SELECT * FROM datoer WHERE dato=#" & dtmCurDate & "#"
Avatar billede martin86 Nybegynder
13. juli 2005 - 13:35 #22
for helvede da .....

MANGE TAK ... Det skal siges at jo det var derfor :o)

lav et svar, du skal have nogle pts..

Mange tka for hjælpen
Avatar billede busschou Praktikant
13. juli 2005 - 13:39 #23
det var så lidt da. Engang imellem stirrer man sig jo blind på tingene, tror slet ikke du bruger dtmToday til noget umiddelbart
Godt det virker :o)
Avatar billede martin86 Nybegynder
13. juli 2005 - 13:41 #24
jo jeg bruger den til at linke til næste/forrige mdr....
Avatar billede martin86 Nybegynder
13. juli 2005 - 13:41 #25
.............. SPØRGSMÅLET ER LUKKET !!!!
Avatar billede busschou Praktikant
14. juli 2005 - 19:03 #26
martin86 >> ser du på det her mere ? http://www.eksperten.dk/spm/610288
Avatar billede martin86 Nybegynder
14. juli 2005 - 20:56 #27
:D jeg har lige lukket den... - tak for reminderen
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester