Avatar billede kev. Nybegynder
19. september 2002 - 17:39 Der er 5 kommentarer og
1 løsning

Function: Id var ventet

Har en fil med alle mine funktioner, kaldet functions.asp. Første funktion i filen hedder følgende:

-----
Function FormaterAfsnit(id,sprog,type)

    Dim strSQL, rsFormaterAfsnit, strFormateret

    If intTypeID = 1 Then
        ...
-----

Denne funktionsfil er så inkluderet på mine sider.
Desværre får jeg denne fejl, blot jeg vil åbne siden, hvor funktionsfilen er inkluderet (kalder ikke engang funktionen):

-----
Fejltype:
Der opstod en Microsoft VBScript-kompileringsfejl (0x800A03F2)
Id var ventet
/test/imagehuset/produkter/CMS/CMS/shared/CMS_functions.asp, line 22, column 33
Function FormaterAfsnit(id,sprog,type)
--------------------------------^
-----

Nogen, der kan forklare fejlen?

Har prøvet at lægge id,type og sprog i variabler allerførst i funktionen og så arbejde med disse variabler i stedet for id,type og sprog selv, men det hjalp heller ikke.

-- Kev.
Avatar billede paviuz Nybegynder
19. september 2002 - 17:50 #1
Tillykke med sppm nr. 260000 :)
det var menigen jeg skulle oprette det .. men lavede mad :/
Avatar billede thomas_regin Nybegynder
19. september 2002 - 18:55 #2
Har du husket at lukke funktionen igen med et End Function?

Med venlig hilsen,

Thomas Regin.
Avatar billede kev. Nybegynder
19. september 2002 - 19:16 #3
Ja, gad bare ikke kopiere hele funktionen ind, da den er ret lang, men her er den >>


Function FormaterAfsnit(id,sprog,type)

    Dim strSQL, rsFormaterAfsnit, strFormateret, intAfsnitID, intSprogID, intTypeID
    intAfsnitID = id
    intSprogID = sprog
    intTypeID = type

    If intTypeID = 1 Then
        'Overskrift

        Dim strIndhold, intIndholdType

        strSQL = "SELECT * FROM " & VaelgDbTabel(type) & " WHERE ID = " & intAfsnitID & ";"
        Set rsFormaterAfsnit = Server.CreateObject("ADODB.RecordSet")
        Set rsFormaterAfsnit = objConn.Execute(strSQL)

        While Not rsFormaterAfsnit.EOF Then
            strIndhold = rsFormaterAfsnit("tekst")
            intIndholdType = rsFormaterAfsnit("type")
        rsFormaterAfsnit.MoveNext
        Wend

        rsFormaterAfsnit.Close
        Set rsFormaterAfsnit = Nothing

        strFormateret = "<div class='CMS_overskrift" & intIndholdType & "'>" & strIndhold & "</div>"

        FormaterAfsnit = strFormateret

    ElseIf intTypeID = 2 Then
        'Brødtekst

        Dim strIndhold

        strSQL = "SELECT * FROM " & VaelgDbTabel(type) & " WHERE ID = " & intAfsnitID & ";"
        Set rsFormaterAfsnit = Server.CreateObject("ADODB.RecordSet")
        Set rsFormaterAfsnit = objConn.Execute(strSQL)

        While Not rsFormaterAfsnit.EOF Then
            strIndhold = rsFormaterAfsnit("tekst")
        rsFormaterAfsnit.MoveNext
        Wend

        rsFormaterAfsnit.Close
        Set rsFormaterAfsnit = Nothing

        strFormateret = "<div class='CMS_brodtekst'>" & strIndhold & "</div>"

        FormaterAfsnit = strFormateret

    ElseIf intTypeID = 3 Then
        'Punktopstilling

        Dim strIndhold

        strSQL = "SELECT * FROM " & VaelgDbTabel(type) & " WHERE ID = " & intAfsnitID & ";"
        Set rsFormaterAfsnit = Server.CreateObject("ADODB.RecordSet")
        Set rsFormaterAfsnit = objConn.Execute(strSQL)

        While Not rsFormaterAfsnit.EOF Then
            strIndhold = rsFormaterAfsnit("tekst")
        rsFormaterAfsnit.MoveNext
        Wend

        rsFormaterAfsnit.Close
        Set rsFormaterAfsnit = Nothing

        strFormateret = "<div class='CMS_brodtekst'><ul type='square'>" & VbCrLf & "<li>" & strIndhold & "</li>" & VbCrLf & "</ul></div>"

        FormaterAfsnit = strFormateret

    ElseIf intTypeID = 4 Then
        'Link

        Dim strIndhold, strIndhold2, intIndholdType

        strSQL = "SELECT * FROM " & VaelgDbTabel(type) & " WHERE ID = " & intAfsnitID & ";"
        Set rsFormaterAfsnit = Server.CreateObject("ADODB.RecordSet")
        Set rsFormaterAfsnit = objConn.Execute(strSQL)

        While Not rsFormaterAfsnit.EOF Then
            strIndhold = rsFormaterAfsnit("titel")
            strIndhold2 = rsFormaterAfsnit("url")
            intIndholdType = rsFormaterAfsnit("type")
        rsFormaterAfsnit.MoveNext
        Wend

        rsFormaterAfsnit.Close
        Set rsFormaterAfsnit = Nothing

        If intIndholdType = 1 Then
            'Ekstern link
            If strIndhold <> "" Then
                strFormateret = "<div class='CMS_brodtekst'><a class='CMS_tekstlink' href='" & strIndhold2 & "' target='_blank'>" & strIndhold & "</a></div>"
            Else
                strFormateret = "<div class='CMS_brodtekst'><a class='CMS_tekstlink' href='" & strIndhold2 & "' target='_blank'>" & strIndhold2 & "</a></div>"
            End If

        ElseIf intIndholdType = 1 Then
            'Intern link
            If strIndhold <> "" Then
                strFormateret = "<div class='CMS_brodtekst'><a class='CMS_tekstlink' href='visside.asp?id=" & strIndhold2 & "&sprogID=" & intSprogID & "' target='_self'>" & strIndhold & "</a></div>"
            Else
                strFormateret = "<div class='CMS_brodtekst'><a class='CMS_tekstlink' href='visside.asp?id=" & strIndhold2 & "&sprogID=" & intSprogID & "' target='_self'>visside.asp?id=" & strIndhold2 & "</a></div>"
            End If

        ElseIf intIndholdType = 3 Then
            'E-mail link
            If strIndhold <> "" Then
                strFormateret = "<div class='CMS_brodtekst'><a class='CMS_tekstlink' href='mailto:" & strIndhold2 & "' target='_self'>" & strIndhold & "</a></div>"
            Else
                strFormateret = "<div class='CMS_brodtekst'><a class='CMS_tekstlink' href='mailto:" & strIndhold2 & "' target='_self'>" & strIndhold2 & "</a></div>"
            End If
        Else
            'Fejl
        End If

        FormaterAfsnit = strFormateret

    ElseIf intTypeID = 5 Then
        'HTML-kode

        Dim strIndhold

        strSQL = "SELECT * FROM " & VaelgDbTabel(type) & " WHERE ID = " & intAfsnitID & ";"
        Set rsFormaterAfsnit = Server.CreateObject("ADODB.RecordSet")
        Set rsFormaterAfsnit = objConn.Execute(strSQL)

        While Not rsFormaterAfsnit.EOF Then
            strIndhold = rsFormaterAfsnit("tekst")
        rsFormaterAfsnit.MoveNext
        Wend

        rsFormaterAfsnit.Close
        Set rsFormaterAfsnit = Nothing

        strFormateret = strIndhold

        FormaterAfsnit = strFormateret

    ElseIf intTypeID = 6 Then
        'Billede

        Dim strBillede, intX, intY, intJustering

        strSQL = "SELECT * FROM " & VaelgDbTabel(type) & " WHERE ID = " & intAfsnitID & ";"
        Set rsFormaterAfsnit = Server.CreateObject("ADODB.RecordSet")
        Set rsFormaterAfsnit = objConn.Execute(strSQL)

        While Not rsFormaterAfsnit.EOF Then
            strIndhold = rsFormaterAfsnit("tekst")
        rsFormaterAfsnit.MoveNext
        Wend

        rsFormaterAfsnit.Close
        Set rsFormaterAfsnit = Nothing

        strFormateret = "<img src='../log/CMS_files/" & strBillede & "' border='0'"
        If intX <> 0 AND intY <> 0 Then
            strFormateret = strFormateret & " width='" & intX & ' height='" & intY & "'"
        End If
        If intJustering = 0 Then
            strFormateret = strFormateret & " align=''"
        ElseIf intJustering = 1 Then
            strFormateret = strFormateret & " align='left'"
        ElseIf intJustering = 2 Then
            strFormateret = strFormateret & " align='right'"
        Else
            'Fejl
        End If
        strFormateret = strFormateret & ">"

        FormaterAfsnit = strFormateret

    Else
        'Fejl
    End If

End Function
Avatar billede thomas_regin Nybegynder
19. september 2002 - 19:34 #4
Kunne ikke umiddelbart finde nogle fejl i koden. Jeg har dog ikke testet den, men observerede dine ; semikoloner i dine SQL-statements. De burde ikke være til gene, men de er unødvendige, så du kan jo prøve at fjerne dem og bare afslutte med "" istedet.

Du kan også prøve at analysere koden lige inden du skriver funktionen. Hvis den ligger på en side med mange andre funktioner, så er det muligt, at det er én af de andre der fejler! (e.g hvis du har glemt af afslutte funktionen eller et end if tag et andet sted).

Må jeg være så fræk at spørge om hvilket CMS du arbejder på? Dit eget? Det ser spændende ud!

Med venlig hilsen,

Thomas Regin
Avatar billede kev. Nybegynder
19. september 2002 - 23:42 #5
Jeg har netop prøvet at være det hele igennem. Det blot en dummy-side, jeg har inkluderet funktionsfilen på, da jeg ville lave db og funktionerne før jeg begyndte at benytte funktionerne.

Og lige inden, jeg skrev ovenstående, virkede siden fint fint. Havde ovenikøbet skrevet skrevet den yderste If-sætning (der tjekker på intTypeID) ind og blot sæt et ' ved hver If/ElseIf. Ingen problemer. Men da jeg så skrev db-udtræk og formatering mv. ind i, så ville den bare ikke vise siden mere.

Jep, det er mit eget lille CMS. Et ganske simpelt et at benytte og udforme, men ret effektivt alligevel (hvis det ikke lige var fordi, at jeg ikke kan få denne lede Function til at virke).

-- Kev.
Avatar billede kev. Nybegynder
23. september 2002 - 12:02 #6
Fik endelig tid til lidt fejlfinding. Fandt også ret hurtigt fejlen. En hjernedød lille ting.... "type" er et reserveret ord.

Starter i stedet min funktion således:

----------
Function FormaterAfsnit(id,sprog,afsnittype)

Dim strSQL, rsFormaterAfsnit, strFormateret, intAfsnitID, intSprogID, intTypeID

intAfsnitID = id
intSprogID = sprog
intTypeID = afsnittype
----------

.... så er der ikke længere problemer
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