Avatar billede cdull Nybegynder
29. august 2006 - 11:05 Der er 8 kommentarer og
1 løsning

variabel i størrelse af array - kun integer tilladt

jeg skal have lavet et multi array hvor antallet afgøres af count fra databasen.
Fx.

rsCount = 20
Dim myArray(rsCount,4)

dette resulteter dog i en fejl.
En heltalskonstant var ventet

Der SKAL åbenbart et rent integer ind, men hvordan får jeg rsCount lavet om til det?
har prøvet med
Dim myArray(Int(rsCount),4) og
Dim myArray(CInt(rsCount),4)

men det virker ikke.

På Forhånd Tak.
Avatar billede softspot Forsker
29. august 2006 - 11:49 #1
Jeg er lidt usikker på om dette er årsagen, men jeg kunne forstille mig at du skal bruge talkonstanter når du erklærer et array (dvs. tal som er kendte inden programmet udføres).

Jeg tror du enten må lave arrayet med en dimension og så på hver plads i arrayet oprette et nyt array. Den anden metode jeg lige kan komme i tanke om, er at benytte den indbyggede ADO Recordset-funktion: GetRows
GetRows giver dig et 2-dimensionelt array med data fra dit recordset. Det forudsætter naturligvis at dit recordset indeholder det du gerne vil have lagt i dit eget array :)

Eksempel på brugen af GetRows (strConnection er din forbindelse til databasen):

dim arr
sql = "SELECT * FROM tabel"
set cn = Server.CreateObject("ADODB.Connection")
cn.Open strConnection
set rs = cn.Execute(sql)
arr = rs.GetRows()
rs.close
cn.close
Avatar billede nielle Nybegynder
29. august 2006 - 12:00 #2
Jeg er ikke klar over om det forholder sig som softspot skriver ... at tallet skal være kendt på compile-tidspunktet.

Hvis det er, så burde du kunne bruge Redim til at lave om på array'et på run-tidspunktet:

Dim myArray()

...

rsCount = 20
ReDim myArray(rsCount,4)
Avatar billede softspot Forsker
29. august 2006 - 12:04 #3
Jeg mener ikke du kan bruge redim på andet end den sidste dimension i et multidimensionelt array... men det bør da prøves (eller undersøges i manualen :)).
Avatar billede softspot Forsker
29. august 2006 - 12:08 #4
Noget kunne tyde på at jeg husker rigtigt :)

Fra VBScript Ref. på MSDN: "If you use the Preserve keyword, you can resize only the last array dimension, and you can't change the number of dimensions at all."

Læs selv resten her: http://msdn.microsoft.com/library/default.asp?url=/library/en-us/script56/html/5c12ce79-6616-4144-b3b6-4cffe3884dfd.asp?frame=true
Avatar billede nielle Nybegynder
29. august 2006 - 12:13 #5
Skal vi sige "delvist rigtig" ;^)

I eksemplet bruger jeg ikke Preserve. Der er en vis logik i at det kun er den sidste dimension som kan ReDim'es hvis der allered er data i arrayet. :^)
Avatar billede softspot Forsker
29. august 2006 - 12:19 #6
Fair nok - den lille detalje fik jeg ikke lige fat i :)
Avatar billede nielle Nybegynder
11. september 2006 - 21:17 #7
cdull> Hvad med noget respons?
Avatar billede cdull Nybegynder
12. september 2006 - 00:50 #8
Sorry gutter. Jeg havde helt svedt det her spørgsmål ud.
Nielle, jeg fik det til at virke med Redim. Kanont.
Smid lige et svar. Og undskyld fordi jeg glemte det.
Avatar billede nielle Nybegynder
12. september 2006 - 06:46 #9
Svar :^)
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