Avatar billede george Nybegynder
01. januar 2006 - 22:42 Der er 10 kommentarer og
1 løsning

Problemer med rs.MoveNext og rs.MovePrevious

Jeg sidder og prøver at lave to kolonner. I hver kolonne er der et billede af en person og tekst i for af fornavn, efternavn o.s.v. Jeg har tilføjet to link til at rette og slette hver record. Jeg laver derfor en "rediger" og "slet" for hver person. Det vil sige at hvis der er 7 personer i databasen for jeg 4 personer i venstre kolonne og 3 i højre kolonne.

Jeg har to problemer:
1. Den første del at koden hvor jeg ligger alt fra DB op i hukommelsen og herefter total antal records. Det kan helt sikkert laves smartere. f.eks. med "SELECT Count(*) At AntalRecords FROM database", men jeg kan ikke rigtig få koden til at virke.

2. Jeg får fejlen : "ADODB.Field (0x80020009)
Either BOF or EOF is True, or the current record has been deleted. Requested operation requires a current record." når jeg kører nedenstående kode. Hvad er der galt ?

<%
        'Create object for the recordset
        Set rs = Server.CreateObject("ADODB.RecordSet")

        'Create DSN connection
        strDSN = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ="&Server.MapPath("../log/database.mdb")

        ' Opbygning af SQL streng
        strSQL = "SELECT * FROM Deltagerdata ORDER BY Efternavn"

        'Open DB
        rs.Open strSQL, strDSN, 1

        'Get the data from the DB into an array, for performance.
        if NOT rs.EOF then
            rsarr = rs.GetRows()
            max = Ubound(rsarr,2)
        else
            max = 0
        end if
       
        rs.Close
        Set rs = Nothing
       
        Max = Max + 1
        Response.Write "Total antal records = " & max       

        '/////////////////////////////////////////////////////////////////////////

        'Creating the Recordset Object
        Set Conn = Server.CreateObject("ADODB.Connection")

        'Creating a DSN-Less connection to your Database
        strDSN = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ="&Server.MapPath("../log/database.mdb")
       
        Conn.Open strDSN

        ' Opbygning af SQL streng
        strSQL = "SELECT * FROM Deltagerdata ORDER BY Efternavn"       

        'Create object for the recordset
        Set rs = Server.CreateObject("ADODB.RecordSet")
               
        'Open your recordset
        rs.Open strSQL, Conn, 3, 1


        Do While NOT rs.EOF
       
        'Hvis max er større eller lig med 1 skal der kun være billede og data i venstre kolonne
        If max >= 1 Then
       
            'viser "rediger" og "slet" for 1. person i venstre kolonne
            Rediger Slet
           
            'Næste record
            rs.MoveNext           

            'viser "rediger" og "slet" for 2. person i højre kolonne
            Rediger Slet           

            'Forrige record
            rs.MovePrevious
           
            'viser billede og data 1. person i venstre kolonne
            Billede - tekst
           
            'Næste record
            rs.MoveNext

            'viser billede og data for 2. person i højre kolonne
            Billede - tekst
           
        Else
       
            'viser "rediger" og "slet" for 1. person i venstre kolonne
            Rediger Slet
           
            'Næste record
            rs.MoveNext           

            'viser "rediger" og "slet" for 2. person i højre kolonne
            Glem Rediger og slet

            'Forrige record
            rs.MovePrevious
           
            'viser billede og data 1. person i venstre kolonne
            Billede - tekst
           
            'Næste record
            rs.MoveNext

            'viser billede og data for 2. person i højre kolonne
            Glem Billede - tekst
           
        End If       

        loop

        'Closing database, we don't need it anymore - we have the info in the array
        rs.close()
        set rs = Nothing

%>
Avatar billede kalp Novice
01. januar 2006 - 22:54 #1
SELECT Count(*) At AntalRecords FROM Tabel

skriv kolonnenavn og ikke stjerne!
Avatar billede george Nybegynder
01. januar 2006 - 23:04 #2
Det har jeg prøvet og det kunne jeg heller ikke få til at virke.

Jeg har brug for hele koden til åbning at database og recordset, for det jeg har prøvet virker ikke.
Avatar billede kalp Novice
02. januar 2006 - 09:13 #3
forbindelse... evt.

Set rs = Server.CreateObject("ADODB.Connection")
rs.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & server.MapPath("database.mdb")


men jeg så du havde en stavefejl i dit forsøg..

SELECT Count(*) At AntalRecords FROM database

skal være

SELECT Count(*) As AntalRecords FROM database
Avatar billede george Nybegynder
02. januar 2006 - 12:21 #4
Så ser min kode sådan ud.

        'Create object for the recordset
        Set rs = Server.CreateObject("ADODB.RecordSet")

        'Create DSN connection
        rs.open = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" & Server.MapPath("../log/vl10.mdb")

        ' Opbygning af SQL streng
        strSQL = SELECT Count(*) As AntalRecords FROM database
       
        AntalRec = rs("AntalRecords")
       
        rs.Close
        Set rs = Nothing
       
        Response.Write "Total antal records = " & AntalRec

Hvad skal der stå i linjen nedenunder "SELECT Count(*) As AntalRecords FROM database" ?
Avatar billede george Nybegynder
02. januar 2006 - 12:22 #5
rs.Open strSQL, ?
Avatar billede kalp Novice
02. januar 2006 - 13:22 #6
strDSN = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ="&Server.MapPath("../log/vl10.mdb")
Set rs = Server.CreateObject("ADODB.Connection")
rs.Open strDSN

        ' Opbygning af SQL streng
        strSQL = SELECT Count(*) As AntalRecords FROM database
       
        AntalRec = rs("AntalRecords")
       
        rs.Close
        Set rs = Nothing
       
        Response.Write "Total antal records = " & AntalRec
Avatar billede george Nybegynder
02. januar 2006 - 14:10 #7
Nu for jeg denne fejl :
Microsoft VBScript runtime (0x800A01C2)
Wrong number of arguments or invalid property assignment: 'rs'
/vl10/admin/deltagerdata.asp, line 118
Avatar billede kalp Novice
02. januar 2006 - 14:14 #8
strDSN = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ="&Server.MapPath("../log/vl10.mdb")
Set rs = Server.CreateObject("ADODB.Connection")
rs.Open strDSN

        ' Opbygning af SQL streng
        strSQL = SELECT Count(*) As AntalRecords FROM database
        rs.Execute (strSQL)
        AntalRec = rs("AntalRecords")
       
        rs.Close
        Set rs = Nothing
       
        Response.Write "Total antal records = " & AntalRec
Avatar billede george Nybegynder
02. januar 2006 - 15:01 #9
Får denne fejl:

Microsoft VBScript compilation (0x800A03EA)
Syntax error
/vl10/admin/deltagerdata.asp, line 116, column 9
strSQL = SELECT Count(*) As AntalRecords FROM Deltagerdata
--------^

Jeg har også prøvet strSQL = "SELECT Count(*) As AntalRecords FROM Deltagerdata", men så får jeg denne fejl:

Microsoft VBScript runtime (0x800A01C2)
Wrong number of arguments or invalid property assignment: 'rs'
/vl10/admin/deltagerdata.asp, line 120

det er denne linje : AntalRec = rs("AntalRecords")

Her er koden som den ser ud hos mig nu:
        strDSN = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" & Server.MapPath("../log/vl10.mdb")
       
        Set rs = Server.CreateObject("ADODB.Connection")
       
        rs.Open strDSN

        ' Opbygning af SQL streng
        strSQL = "SELECT Count(*) As AntalRecords FROM Deltagerdata"
       
        rs.Execute (strSQL)
       
        AntalRec = rs("AntalRecords")
       
        rs.Close
        Set rs = Nothing
Avatar billede george Nybegynder
02. januar 2006 - 22:46 #10
Nu har jeg denne kode som ser ud til at virke, lige bortset fra at den ikke kan lide rs.MovePrevious og det er jo måden jeg åbner mit record set på, der er skyld i det. Er der nogen der kan fortælle mig hvordan record settet skal åbnes så jeg ungår den fejl ?

Her er koden som den ser ud nu :
<%
        'Creating the Recordset Object
        Set Conn = Server.CreateObject("ADODB.Connection")

        'Creating a DSN-Less connection to your Database
        Conn.Open = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" & Server.MapPath("../log/vl10.mdb")

        ' Opbygning af SQL streng
        strSQL = "SELECT * FROM Deltagerdata ORDER BY Efternavn"       

        Set rs2 = Conn.Execute(strSQL)

        '/////////////////////////////////////////////////////////////////////////   
       
        ' Opbygning af SQL streng
        strSQL = "SELECT Count(*) As AntalRecords FROM Deltagerdata"
       
        Set rs = Conn.Execute(strSQL)
        'rs.Open strSQL, Conn, 3, 1
       
        AntalRec = rs("AntalRecords")

       
       
        Do Until rs.EOF 'Looping

        If AntalRec >= 1 Then
       
            'viser "rediger" og "slet" for 1. person i venstre kolonne
            Response.Write "Rediger Slet"
           
            'Næste record
            rs.MoveNext           

            'viser "rediger" og "slet" for 2. person i højre kolonne
            Response.Write "Rediger Slet" & "<br>"           

            'Forrige record
            rs.MovePrevious
           
            'viser billede og data 1. person i venstre kolonne
            Response.Write "Billede - tekst"
           
            'Næste record
            rs.MoveNext

            'viser billede og data for 2. person i højre kolonne
            Response.Write "Billede - tekst" & "<br>"
           
        Else
       
            'viser "rediger" og "slet" for 1. person i venstre kolonne
            Response.Write "Rediger Slet"
           
            'Næste record
            rs.MoveNext           

            'viser "rediger" og "slet" for 2. person i højre kolonne
            Response.Write "Glem rediger og slet"

            'Forrige record
            rs.MovePrevious
           
            'viser billede og data 1. person i venstre kolonne
            Response.Write "Billede - tekst" & "<br>"
           
            'Næste record
            rs.MoveNext

            'viser billede og data for 2. person i højre kolonne
            Response.Write "Glem rediger og slet"
           
        End If       

        loop

        'Closing database, we don't need it anymore - we have the info in the array
        rs.close()
        set rs = Nothing

%>
Avatar billede george Nybegynder
03. januar 2006 - 22:58 #11
Der sker vist ikke mere her.
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