Avatar billede mark_j Nybegynder
20. maj 2002 - 22:47 Der er 20 kommentarer og
1 løsning

Recordset i array

Nogen der kan hjælpe med dette array:
Function GetItemParameters(iItemID)
Dim objRS
    Set objRS = Server.CreateObject ("ADODB.Recordset")
    objRS.Open "tblVin",objConn,adOpenStatic,adLockReadOnly,adCmdTable
Dim aParameters()
Dim ArrSize
ArrSize=-1
while not objRS.EOF
ArrSize = ArrSize + 1
Redim preserve aParameters(ArrSize,4)
    aParameters(ArrSize,0) = objRS("IDnavn")
    aParameters(ArrSize,1) = objRS("Navn")
    aParameters(ArrSize,2) = objRS("Beskrivelse")
    aParameters(ArrSize,3) = objRS("Pris")
    objRS.MoveNext
    Wend
objRS.Close
Set objRS = Nothing       
GetItemParameters = aParameters
End Function
Jeg får en fejl der hedder subscript out of range
Avatar billede kimiwan Nybegynder
20. maj 2002 - 22:49 #1
brug den indbyggede ado funktion GetRows()
Avatar billede mark_j Nybegynder
20. maj 2002 - 22:51 #2
Hej Kimiwam jeg roder stadigvæk med det eksamens projekt.
Kan du give et eksempel på hvordan jeg bygger den der om.
Avatar billede kimiwan Nybegynder
20. maj 2002 - 22:53 #3
uddyber lige:

når du har åbnet dit recordset gør du sådan her:

if not objRS.eof then aParameters = objRS.GetRows()
objRS.Close

så har du hentet det ind i et to-dimensionelt array

http://www.programmersresource.com/articles/getrows.asp
Avatar billede kimiwan Nybegynder
20. maj 2002 - 23:00 #4
kan det bruges?
Avatar billede mark_j Nybegynder
20. maj 2002 - 23:04 #5
Er vi enige om at det her er rigtigt?
Function GetItemParameters(iItemID)
Dim objRS
    Set objRS = Server.CreateObject ("ADODB.Recordset")
    objRS.Open "tblVin",objConn,adOpenStatic,adLockReadOnly,adCmdTable
Dim aParameters()

    IF not objRS.EOF Then
    aParameters = objRS.GetRows
    objRS.MoveNext
    End if

objRS.Close
Set objRS = Nothing       


GetItemParameters = aParameters
End Function
Her skal jeg have dem frem igen det vil den ikke er det ubound der er galt
<%
    For I = 1 to Ubound(aParameters,2)
        aParameters = GetItemParameters(I)
%>
        <TR>
            <TD><%= aParameters(0,i) %></TD>
            <TD><%= aParameters(1,i) %></TD>
            <TD>Kr.<%= aParameters(2,i) %></TD>
                <TD><%= aParameters(3,i) %></TD>         
            <TD><A HREF="./shopping.asp?action=add&item=<%= I %>&count=1">Bestil!</A></TD>
        </TR>
<%
    Next
%>
Avatar billede mark_j Nybegynder
20. maj 2002 - 23:07 #6
Jeg tror at jeg er meget tæt på :)
Avatar billede eagleeye Praktikant
20. maj 2002 - 23:12 #7
som jeg læser det eks så skal denne linie:
aParameters = GetItemParameters(I)

Flyttes ud foran For i= 1 to..

Altså sådan her:
aParameters = GetItemParameters(0)
For I = 1 to Ubound(aParameters,2)
%>
Avatar billede mark_j Nybegynder
20. maj 2002 - 23:14 #8
kan det have noget at sige at der er 10 felter i min database men jeg vil kun se 4
Avatar billede mark_j Nybegynder
20. maj 2002 - 23:15 #9
sorry lidt sent på den prøver lige
Avatar billede kimiwan Nybegynder
20. maj 2002 - 23:16 #10
<%
Function GetItemParameters()
    Dim objRS
    Set objRS = Server.CreateObject ("ADODB.Recordset")
    objRS.Open "tblVin",objConn,adOpenStatic,adLockReadOnly,adCmdTable
    'henter objRS ind i et to-dimensionelt array vha getrows()
    if not objRS.EOF then
        GetItemParameters = objRS.GetRows
    else
        GetItemParameters = null
    end if
    objRS.Close
    Set objRS = Nothing
End Function

aParameters = GetItemParameters
For i = 0 to Ubound(aParameters,2)
%>
        <TR>
            <TD><%= aParameters(0,i) %></TD>
            <TD><%= aParameters(1,i) %></TD>
            <TD>Kr.<%= aParameters(2,i) %></TD>
                <TD><%= aParameters(3,i) %></TD>
                                <!-- er du sikker på du vil bruge dit arrayindeks og ikke et itemid der er gemt i arrayet? -->
            <TD><A HREF="./shopping.asp?action=add&item=<%= i %>&count=1">Bestil!</A></TD>
        </TR>
<%
Next
%>
Avatar billede mark_j Nybegynder
20. maj 2002 - 23:17 #11
nu får jeg en type mismatch i linie aParameters = objRS.getrows
Jeg gir mig snart til at græde
Avatar billede kimiwan Nybegynder
20. maj 2002 - 23:18 #12
men en ting du kan have meget stor fordel af når du bruger getrows er at navngive alle de felter du returnerer i dit recordset - så i stedet for det her:

objRS.Open "tblVin",objConn,adOpenStatic,adLockReadOnly,adCmdTable

bør du gøre det her:

objRS.Open "SELECT id, vinnavn, distrikt FROM tblVin",objConn,adOpenStatic,adLockReadOnly,adCmdText
Avatar billede mark_j Nybegynder
20. maj 2002 - 23:22 #13
NU virker det hvor sejt, hvad er fordelen ved itemid
Tak igen Kimiwan
Avatar billede kimiwan Nybegynder
20. maj 2002 - 23:28 #14
fordelen er at selvom du ændrer i din tabel (hvis du ændrer rækkefølgen af felterne, føjer et felt til, fjerner et felt el.lign.) vil du stadigvæk kun få returneret præcis det du regner med i din aspside (med mindre du altså fjerner et af felterne, du brugte i aspsiden!)
Avatar billede mark_j Nybegynder
20. maj 2002 - 23:44 #15
Hej Kimiwan hvis jeg opretter et spørgsmål vil du så vise mig hvordan jeg bruger itemid i min kode, jeg har ikke så meget tid det skal være afleveret imorgen tidlig
Mark
Avatar billede kimiwan Nybegynder
20. maj 2002 - 23:46 #16
så læg dit icqnr her
Avatar billede mark_j Nybegynder
20. maj 2002 - 23:49 #17
har desværre ikke icq bruger messenger
Avatar billede kimiwan Nybegynder
20. maj 2002 - 23:50 #18
yahoo? msn?  så læg et id :o)
Avatar billede mark_j Nybegynder
20. maj 2002 - 23:52 #19
msn messenger
markjustesen@gmx.net
Avatar billede kimiwan Nybegynder
20. maj 2002 - 23:54 #20
hm.. hvordan kan jeg tilføje dig til min liste, når du bruger sådan en emailadresse??
Avatar billede mark_j Nybegynder
20. maj 2002 - 23:57 #21
hvad mener du?
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