Avatar billede pnr Nybegynder
10. oktober 2003 - 14:46 Der er 10 kommentarer og
3 løsninger

skal definere en array størrelse på baggrund af et resultset

Jeg skal ligge data fra en database forspørgelse over i et array, men hvordan finder jeg længden på resultsættet så jeg kan definere array'et?
Avatar billede killer_r Nybegynder
10. oktober 2003 - 14:50 #1
laver SQL'en:
set rs = Conn.execute("select count(*) as antal where [noget] = [noget andet]")

så kan du hente det med rs("antal")
Avatar billede pnr Nybegynder
10. oktober 2003 - 14:51 #2
Er det optimalt? kan man ikke spørge direkte på resultsættet?
Avatar billede netro Nybegynder
10. oktober 2003 - 14:55 #3
Jo, det kan du da.

Set rs = Server.CreateObject("ADODB.Recordset")
SQL = "Select * From Tabel"
rs.Open SQL, Din_Conn, 1

Antal = rs.RecordCount

While Not rs.EOF
  'Blabla
  rs.MoveNext
Wend
Avatar billede nmh Nybegynder
10. oktober 2003 - 15:06 #4
Avatar billede nmh Nybegynder
10. oktober 2003 - 15:07 #5
Så har du med det samme dit array, og det er en hurtig metode!
Avatar billede netro Nybegynder
10. oktober 2003 - 15:13 #6
God artikel.
Avatar billede hiks Nybegynder
10. oktober 2003 - 16:34 #7
ja - og den er optimal at bruge ved større recordssæt...

efterfølgende hvis jeg skal svare på spørgsmålet kan du jo bruge som nmh's metode som grundlag og gøre sådan efter du har udført din sql...:
<%
RSarray = oRS.GetRows()

if IsArray(RSarray) = True then
    response.write "Antallet af records er: " & Ubound(RSArray, 2)
else
    response.write "Ingen records fundet..."
end if
%>
Avatar billede pnr Nybegynder
13. oktober 2003 - 09:09 #8
Det var en smart måde at gøre det på! Jeg har bare et lille problem for jeg skal have lidt plads i arrayet så jeg kan ligge nogle data i manulet. eks

række 0 (fra Databasen) | test | test1 |
række 1 (fra Databasen) | 45  |  65  |
række 2 (Fra kode(pris))|  2  |  5  |
række 3 (Fra Koden(antal))| 1  |  1    |

DVS jeg skal have tilføjet 2 rækker mere på arrayet end der kommer fra resultsættet, hvordan gør jeg det?
Avatar billede nmh Nybegynder
13. oktober 2003 - 11:06 #9
Du kan gøre således:
i=Ubound(RSarray,1): j=Ubound(RSarray,2)
redim preserve RSarray(i,j+2)
Nu har tabellen RSarray 2 ekstra rækker, og det oprindelige indhold er intakt.

(Brug af redim preserve: Man kan kun ændre den sidste dimension, så det var godt det ikke var flere søjler, du havde brug for)
Avatar billede pnr Nybegynder
13. oktober 2003 - 11:40 #10
Det kan godt være at jeg har udtrykt mig forkert, men jeg tror at jeg skal bruge flere søjler, kan dette ikke lade sig gøre?
Avatar billede nmh Nybegynder
13. oktober 2003 - 12:02 #11
Jo, men så kan du ikke udvidde dit array på den simple måde. Så skal du definere et nyt array med den størrelse, du skal bruge, og så kopiere dine data fra RSarray over i det nye.
Du kan jo også definere et nyt array "parallelt" med RSarray, til at rumme de ekstra søjler.

dim A(1,10), B(1,10)
det svarer jo til et array med 4 søjler og 10 rækker.

For at definere et nyt array med dimensioner, du først kender på kørselstidspunktet kan du gøre således:

dim A()
'Giv nu n og m de ønskede værdier
'Næste ordre skaber nu det arry, du har brug for.
redim A(n,m)
Avatar billede nmh Nybegynder
13. oktober 2003 - 12:23 #12
ups: rettelse dim A(1,10)
2 søjler og 11 rækker.
Avatar billede pnr Nybegynder
13. oktober 2003 - 12:46 #13
Jeg takker mange gange
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