08. februar 2001 - 10:10Der 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?
I dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
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.
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)
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) & \" </td>\" & vbcrlf Next response.write \"</tr>\" & vbcrlf rs.MoveNext Loop
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).
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
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?
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.
:) - 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 .....\"?
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 ;-)
Synes godt om
Ny brugerNybegynder
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.