Avatar billede mimi Nybegynder
17. april 2002 - 23:48 Der er 11 kommentarer og
1 løsning

Database forbindelse...

Jeg er ved at lave en tagwall og skulle i den forbindelse have lavet noget paging... Jeg fik noget kode af en ven - koden er taget direkte fra hans tagwall. Når jeg forsøger at køre det, så får jeg følgende fejl:

Error Type:
Microsoft VBScript runtime (0x800A01A8)
Object required: 'ActiveConnection'

Det er en Access-database, jeg bruger, hvorimod hans vist nok er MySQL.. kan det have noget med det at gøre?

Her følger noget af koden i dokumentet:
<%
Dim Page
If Trim(Request.QueryString("page")) <> "" And IsNumeric(Trim(Request.QueryString("page"))) Then
        Page = CInt(Trim(Request.QueryString("page")))
Else
        Page = 1
End If

Const cPageSize = 20
Const adOpenStatic = 3

Dim RS
Set RS = Server.CreateObject("ADODB.RecordSet")
Set RS.ActiveConnection  = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ="&Server.MapPath("tagwall/tagwall.mdb")

RS.PageSize = cPageSize
RS.Source = "SELECT * FROM tagwall order by created desc."
RS.CursorType = adOpenStatic
RS.Open
If Page > RS.PageCount And RS.PageCount > 0 Then Page = RS.PageCount
If Not RS.EOF Then RS.AbsolutePage = Page

Jeg håber en eller anden kan hjælpe, da jeg er ved at få grå hår over det! Svar gerne på "dummy-sprog", da jeg er nybegynder... :o)
Avatar billede milo Nybegynder
17. april 2002 - 23:52 #1
ja...det er pga. database typen :)
Avatar billede mimi Nybegynder
17. april 2002 - 23:54 #2
Hmm... oki.

Jeg har en lidt anden version, som rent faktisk virker efter hensigten. Koden ser således ud:

<%
intPage = Request("page")
If isNumeric(intPage) = False Or intPage < 1 Then
    intPage = 1
End If

Set rs = Server.CreateObject("ADODB.RecordSet")
strSQL = "SELECT * FROM tagwall order by created desc"
strDSN = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ="&Server.MapPath("tagwall/tagwall.mdb")
rs.Open strSQL, strDSN, 1


If Not (rs.BOF Or rs.EOF) Then
    rs.PageSize = 3
    rs.AbsolutePage = intPage
    intRecCount = rs.PageSize
    intPageCount = rs.PageCount
    Response.Write "<p><b>Side " & intPage & " af " & intPageCount & "</b></p>"
    Do While Not rs.EOF And intRecCount > 0
'      Response.Write "<font color='#FF0000'>" & rs("navn") & rs("tag") & "<br></font>"
        Response.Write "<table width='100%' border='0' cellspacing='0' cellpadding='10'>"
        Response.Write      "<tr bgcolor='#666666'>"
        Response.Write        "<td><b>" & rs("navn") & "</b></td>"
        Response.Write        "<td width='200'>"
        Response.Write          "<div align='right'>" & rs("created") & "</div>"
        Response.Write        "</td>"
        Response.Write      "</tr>"
        Response.Write    "</table>"
        Response.Write    "<table width='100%' border='0' cellspacing='0' cellpadding='10' style='border:1px solid #666666'>"
        Response.Write      "<tr>"
        Response.Write        "<td>" & rs("tag") & "</td>"
       
'        Response.Write          & addLinks(tag, "_blank") &

        Response.Write      "</tr>"
        Response.Write    "</table>"
        Response.Write    "<br>"
       
    intRecCount = intRecCount - 1
    rs.MoveNext
    Loop
End If
rs.Close
Set rs = Nothing

Response.Write "<p>Gå til side "
For intNum = 1 To intPageCount
    Response.Write "<a href=tagwall.asp?page=" & intNum & ">" & intNum & "</a> "
Next

%>

Nu er mit spørgsmål så, om man ikke kan omskrive "Response.write" på en eller anden måde, så det ikke behøver stå der på hver linie... Der er noget med Set Rec = et-eller-andet og i selve html-koden kan man så nøjes med at skrive "<%=tag%> eller noget i den stil...
Men hvad er syntaksen. Jeg synes jeg har prøvet alt, men det vil ikke, som jeg vil... :o(
Avatar billede eagleeye Praktikant
17. april 2002 - 23:55 #3
Prøv at fjerne Set fra RS.ActiveConnecti0on:

RS.ActiveConnection  = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ="&Server.MapPath("tagwall/tagwall.mdb")
Avatar billede gryn Nybegynder
18. april 2002 - 00:00 #4
Du kan lukke din ASP-kode og åbne den igen.

Eks.


<%
intPage = Request("page")
If isNumeric(intPage) = False Or intPage < 1 Then
    intPage = 1
End If

Set rs = Server.CreateObject("ADODB.RecordSet")
strSQL = "SELECT * FROM tagwall order by created desc"
strDSN = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ="&Server.MapPath("tagwall/tagwall.mdb")
rs.Open strSQL, strDSN, 1


If Not (rs.BOF Or rs.EOF) Then
    rs.PageSize = 3
    rs.AbsolutePage = intPage
    intRecCount = rs.PageSize
    intPageCount = rs.PageCount
    Response.Write "<p><b>Side " & intPage & " af " & intPageCount & "</b></p>"
    Do While Not rs.EOF And intRecCount > 0
'      Response.Write "<font color='#FF0000'>" & rs("navn") & rs("tag") & "<br></font>"
%>

Her skriver du dine HTML-koder

hvis du skal bruge noget fra db'en skriver du f.eks<%= rs("created") %>

<%       
    intRecCount = intRecCount - 1
    rs.MoveNext
    Loop
End If
rs.Close
Set rs = Nothing

Response.Write "<p>Gå til side "
For intNum = 1 To intPageCount
    Response.Write "<a href=tagwall.asp?page=" & intNum & ">" & intNum & "</a> "
Next

%>


www.fotx.net/gryn
Avatar billede eagleeye Praktikant
18. april 2002 - 00:01 #5
Eller er det fordi ActiveConnection vil havde et object og ikke en tekst streng:

set conn = server.createObject("ADODB.Connection")
conn.Open "DRIVER={Microsoft Access Driver (*.mdb)};DBQ="&Server.MapPath("tagwall/tagwall.mdb")

Set rs.ActiveConnection = conn
Avatar billede mimi Nybegynder
18. april 2002 - 00:09 #6
Gryn, det ser næsten ud til at virke... Bortset fra, at jeg lidt tidligere i dokumentet har en funktion, som jeg hidtil har kaldt således:
<td><%Response.write addLinks(tag, "_blank")%></td>

Jeg kan ikke umiddelbart gennemskue, hvad den skal hedde så... Har prøvet med <%=addLinks(tag, "_blank")%> men det virker ikke. Jeg får ikke nogen fejlmeddelse, men siden ser bare ikke rigtig ud.
Avatar billede gryn Nybegynder
18. april 2002 - 00:13 #7
Det skulle ellers gerne virke, men ellers er der vel ikke noget i vejen for, at du stadig kalder den med <td><%Response.write addLinks(tag, "_blank")%></td>
Avatar billede mimi Nybegynder
18. april 2002 - 00:18 #8
Jo, for den ser ikke rigtig ud, uanset hvordan jeg skriver det. Det er ligesom om, det helt bliver ignoreret (cellen er tom).
Og desuden... hvad skal alle mine Replace-fætre hedde?
I mit tidligere script startede min kode således:
Set Rs = Server.CreateObject("ADODB.Connection")
Rs.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & server.MapPath("tagwall/tagwall.mdb")

sql = "SELECT * FROM tagwall order by created desc"
Set Rec = Rs.Execute(sql)

DO WHILE NOT Rec.EOF
created = Rec("created")
navn = Rec("navn")
id = Rec("id")
tag = Rec("tag")
tag = Replace(tag, "<", "&lt;")
tag = Replace(tag, ">", "&gt;")
tag = Replace(tag, vbCrLf, "<br>")

Hvad så nu? Den melder fejl pga. "Rec"-tingen.... :o(
Suk... tilgiv en stakkels begynder for min uvidenhed.
Avatar billede gryn Nybegynder
18. april 2002 - 00:20 #9
ret rec til rs

f.eks
navn = rs("navn")
Avatar billede mimi Nybegynder
18. april 2002 - 00:23 #10
Hey-hey!! Nu virker det skisme! Jeg ændrede også funktionskaldet tilbage til <%Response.write addLinks(tag, "_blank")%>.

Tusind tak for hjælpen!!!

:oD
Avatar billede mimi Nybegynder
18. april 2002 - 00:25 #11
Gryn får pointene. Jeg håber det er i orden, Eagleeye... Ellers er der ikke rigtig noget at gøre ved det, for nu er det for sent. ;o)
Avatar billede gryn Nybegynder
18. april 2002 - 00:26 #12
Takker for pontene. . . Det var måske lige i overkanten
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