• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 196
  • Last Modified:

Multidimensional Array

I have a multidimensional array that is 6 colums wide.

I am populating it from a recordset and therefore do not know the length so I using a dynamic array as below

currentfile = 0
WHILE NOT MyRS2.EOF
      IF currentfile = 0 Then
      ' do nothing
      Else
      Redim Preserve ArrPassed(5,currentfile)
      End IF
      ArrPassed(vantivenumber,currentfile) = MyRS("vantivenumber")
      ArrPassed(teamname,currentfile) = MyRS("teamname")
      ArrPassed(passedreason,currentfile) = MyRS("passedreason")
      ArrPassed(timetaken,currentfile) = MyRS("timetaken")
      ArrPassed(notes,currentfile) = MyRS("notes")
      ArrPassed(dateentered,currentfile) = MyRS("dateentered")
      currentfile = currentfile + 1
MyRS2.MoveNext
Wend

I am now trying to find out how to find out the ubound limits of the array so i can do a for next loop but i cant seem to figure it out from the many articles i have read.

This is extremely urgent hence the points.
0
JordansGhost
Asked:
JordansGhost
  • 4
  • 2
  • 2
  • +2
4 Solutions
 
ColosseoCommented:
Hi

have you tried UBound(ArrPassed)

That should work ok

Scott
0
 
JordansGhostAuthor Commented:
that returns 5 which is the 6 columns when 0 based, i need to know how many rows there is
0
 
ColosseoCommented:
You could always switch your array around so your code snippet becomes

currentfile = 0
WHILE NOT MyRS2.EOF
     IF currentfile = 0 Then
     ' do nothing
     Else
     Redim Preserve ArrPassed(currentfile,5)
     End IF
     ArrPassed(currentfile,vantivenumber) = MyRS("vantivenumber")
     ArrPassed(currentfile,teamname) = MyRS("teamname")

and so on

Scott
0
Technology Partners: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

 
mladenoviczCommented:
UBound(arrayname[, dimension])

Ubound(ArrPassed,1)
Ubound(ArrPassed,2)


Example:

Dim A(1 To 100, 0 To 3, -3 To 4)


UBound(A, 1) ---> 100
UBound(A, 2) ---> 3
UBound(A, 3) ---> 4
0
 
ColosseoCommented:
Just realised that wont work with your preserve statement
0
 
ColosseoCommented:
sorry, I meant my suggestion wont work... mladenovicz is spot on
0
 
JR2003Commented:
to get the UBound of the 2nd dimension use the following:

UBound(ArrPassed, 2)

0
 
JR2003Commented:
PS: You could dimension the array(Rows, Columns) rather than (Columns, Rows)
      then UBound without the dimension parameter would work.

UBound(arrayname[, dimension])

The UBound function syntax has these parts:

arrayname: Required. Name of the array variable; follows standard variable naming conventions.

dimension: Optional; Variant (Long). Whole number indicating which dimension's upper bound is returned. Use 1 for the first dimension, 2 for the second, and so on. If dimension is omitted, 1 is assumed.
0
 
SvenCommented:
You could also Dim the array to begin indexing at 1 not 0:

Dim array(1 To 10)
Dim multiarray(10, 1 To 10)
0
 
JordansGhostAuthor Commented:
Sorry guys, my mistake.

The problem was the recorset was EOF and this was the one time i didnt test for it. seen as the array didnt complain i presumed the data was in there.

All the information given was good and similar to what i have already read.

Ill split the points for your quick responses and grade accordingly.
0

Featured Post

Free Tool: Port Scanner

Check which ports are open to the outside world. Helps make sure that your firewall rules are working as intended.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

  • 4
  • 2
  • 2
  • +2
Tackle projects and never again get stuck behind a technical roadblock.
Join Now