Avatar billede roadrunr Nybegynder
08. februar 2001 - 10:10 Der er 17 kommentarer og
1 løsning

Konverte Array til RecordSet el.lign.

Hvis man et 2-dim. array, kan man så konterere det til et slags recordset, for derved at få muligheden for at kunne sortere stigende og falende? hvis:hvordan?
Avatar billede gandalfthewhite Nybegynder
08. februar 2001 - 10:14 #1
Du opretter et recordsæt som normalt. Derefter bruger du fields collection til at definere hvilke fields der skal være i recordsættet. Til sidst populerer du recordsættet med data fra array.

Det var hovedprincipperne.

/Gandalf
Avatar billede seider Nybegynder
08. februar 2001 - 10:14 #2
bedste bud må være at du løber igennem og udvælger den mindste i dit array. smid den ind i et nyt array som første element.

den har dog ulempen at den er langtsom og skal gennemløbes med ddet antal der er af elementer i arrayet

/* seider */
Avatar billede roadrunr Nybegynder
08. februar 2001 - 10:25 #3
gandalfthewhite: det vil jeg egentlig gerne høre lidt mere om. Kan du evt uddybe med et eksempel?
Mit array ser eks. ud som følgende:
-----------------------------------------
Dim myArray()
Redim myArray(3,3)

myArray(0,0) = \"Fornavn1\"
myArray(1,0) = \"Efternavn1\"
myArray(2,0) = \"Tlf1\"

myArray(0,1) = \"Fornavn2\"
myArray(1,1) = \"Efternavn2\"
myArray(2,1) = \"Tlf1\"

myArray(0,2) = \"Fornavn3\"
myArray(1,2) = \"Efternavn3\"
myArray(2,2) = \"Tlf3\"
------------------------------------------
Avatar billede gandalfthewhite Nybegynder
08. februar 2001 - 10:34 #4
Ja, men kan det vente til frokost. Der er en klient der betaler for min tid lige nu, så det er vel fair hvis jeg laver lidt for dem. :-)
Avatar billede roadrunr Nybegynder
08. februar 2001 - 10:43 #5
Lyder rimeligt :)
Avatar billede kasseper Nybegynder
08. februar 2001 - 12:53 #6
lytter lige ;)
Avatar billede gandalfthewhite Nybegynder
08. februar 2001 - 14:18 #7
Jeg måtte skrive et eks fra bunden, så jeg skulle lige finde et tidspunkt det kunne lade sig gøre.
Here we go:


<%@ Language=VBScript %>
<HTML>
<HEAD>
<META NAME=\"GENERATOR\" Content=\"Microsoft Visual Studio 6.0\">
</HEAD>
<BODY>
<!--include file=\"../sysfiles/adovbs.asp\"-->
<%
Dim myArray()
Redim myArray(3,3)

myArray(0,0) = \"Fornavn1\"
myArray(1,0) = \"kasseper\"
myArray(2,0) = \"11 22 33 44\"

myArray(0,1) = \"Fornavn2\"
myArray(1,1) = \"roadrunr\"
myArray(2,1) = \"44 22 11 33\"

myArray(0,2) = \"Fornavn3\"
myArray(1,2) = \"Gandalf\"
myArray(2,2) = \"22 33 11 44\"

dim rs
set rs = server.createobject(\"ADODB.Recordset\")

with rs.Fields
    \'Selv om adovbs er includeret, saa faar jeg fejl hvis jeg
    \'bruger ennummerede konstanter, derfor talværdier (kolonne to)
    .Append \"ID\", 3, 4, adFldUpdatable    \'adInteger
    .Append \"Fornavn\", 202, 50,adFldUpdatable    \'adVarWChar
    .Append \"EfterNavn\",202, 50,adFldUpdatable \'adVarWChar
    .Append \"Tlf\", 202, 11, adFldIsNullable \'adVarWChar
end with

with rs
    .Open
    For x = 0 to UBound(myArray) - 1
        .AddNew
        rs(\"ID\") = x + 1
        rs(\"Fornavn\") = myArray(0,x)
        rs(\"EfterNavn\") = myArray(1,x)
        rs(\"Tlf\") = myArray(2,x)
        .Update
    next
end with

Call writeRs(rs)

rs.sort = \"Tlf\"

Call writeRs(rs)

rs.Close

Sub writeRs(rs)
    response.write \"<h3> Printout Recordset </h3>\"
    iFieldCount = rs.Fields.Count - 1
    Response.Write \"<table border=1><tr>\"
    i = 0
    For i = 0 To iFieldCount
        sName = rs(i).Name
        Response.Write \"<td>\" & sName & \"</td>\"
    Next
    Response.Write \"</tr>\"

    iCount = rs.Recordcount - 1
    if not rs.bof then
        rs.movefirst
    end if
   
    Do until rs.eof
        i = 0
            response.write \"<tr>\" & vbcrlf
            For x = 0 to iFieldCount
                Response.Write \"<td>\" & rs(x) & \"&nbsp;</td>\" & vbcrlf
            Next
            response.write \"</tr>\" & vbcrlf
        rs.MoveNext
    Loop

    Response.Write \"</table><p>&nbsp;</p>\"
End Sub


%>
<P>&nbsp;</P>

</BODY>
</HTML>
Avatar billede gandalfthewhite Nybegynder
08. februar 2001 - 14:27 #8
PS adovbs.asp er blot den almindelige adovbs.inc som jeg har omdøbt.

Med i købet fik i så min generisk funktion til test udskrivning af recordset. Husk copyright ;-)

/Gandalf
Avatar billede roadrunr Nybegynder
08. februar 2001 - 14:48 #9
Det ser f.... smart ud. Jeg vil lige kigge på det - så vender jeg tilbage.
Avatar billede gandalfthewhite Nybegynder
08. februar 2001 - 14:55 #10
Du må sku da indrømme at der er valuta for point\'sene her ;-)
Avatar billede roadrunr Nybegynder
08. februar 2001 - 14:55 #11
gandalfthewhite: har du evt. en god reference til hvor jeg kan læse mere om \"fields collection\"? - det ser meget interessant ud(vidst ikke sådan noget var muligt).
Avatar billede gandalfthewhite Nybegynder
08. februar 2001 - 15:02 #12
Hmm mon ikke der kan findes noget på msdn (http://msdn.microsoft.com/library/default.asp)
Den plejer da at være god for en hjælpende hånd om ms produkter that is.

Der skal jo også være plads til at lære nyt :-)

/Gandalf
Avatar billede kasseper Nybegynder
08. februar 2001 - 21:10 #13
God hjælp kommer fra Gandalf...;)
Lige en indskudt sætning/spg. ved du så også hvilken sorterings algoritme VBScript \'motoren\' anvender, når den laver sortering på et recordset....?
Kasseper
Avatar billede roadrunr Nybegynder
09. februar 2001 - 08:53 #14
gandalfthewhite: jeg vil gerne sige tak for hjælp ved at hæve dine point.
Et lille side spg: mht. datatyper - hvis man vil bruge \"BOOLEAN(ja/nej)\" som datatype, hvor langt skal feltet så være?
Avatar billede kasseper Nybegynder
09. februar 2001 - 08:56 #15
roadrunr >> det skal være længden 1, da det normalt er angivet ved en bit, 1: Ja 0: Nej(tror jeg nok)
Avatar billede gandalfthewhite Nybegynder
09. februar 2001 - 10:38 #16
kasseper >>
Tak for de pæne ord 8-)
Vedr. algoritme, så ved jeg det ikke, men i det mindste får du flyttet sorteringen over i et object som er skrevet i C. Det gør jo en del for performance.
Om dette opvejes omkostningerne ved instanciering af objectet afhænger nok af mængden af data der skal sorteres.
Du har ret i at det er en bit og i asp sider er værdien 1 for true og 0 for false. Det er ikke muligt at anvende true/false ved indsæt/opdatering i db.

roadrunr >> Tak for de ekstra points det var venligt.
Avatar billede roadrunr Nybegynder
09. februar 2001 - 10:44 #17
:) - nu hvor du har vist at det er muligt at lave en sortering i recordsetet via. rs.sort = ?. Kan man så også lave en forespørgsel ala: rs.query \"WHERE .....\"?
Avatar billede gandalfthewhite Nybegynder
11. februar 2001 - 23:12 #18
Hej igen
Beklager det tog lidt, men det er ikke altid muligt få tid til disse sideaktiviteter på arb, så svaret måtte ligge lidt. Det er faktisk meget enkelt.

Indsæt følgende to linier før rs.Close:

rs.Filter = \"Tlf = \'22 33 11 44\'\"

Call writeRs(rs)

Det skulle vise pricippet, så kan du/i sikkert godt regne resten ud ;-)
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