access 동적배열 - AccessOn
동적 배열에 관해서 알아보겠습니다.
동적 배열은 위의 배열처럼 한번 정해주면 정해준 수만큼 배열의 수가 정해지는 것이 아니라,
말 그대로 배열의 수가 변경이 가능하다는 것입니다. 그렇다고 거창하게 어려운 것은 아니고 배열을 선언할 때
괄호의 숫자만 없애주면됩니다. 배열의 크기를 얼마나 할당해야 할지 잘 모를 경우 사용합니다. 작업을 하다보면
어떠한 결과값을 받아서 배열의 크기를 결정해야 할 경우가 있는데 이러한 경우에 사용하면 됩니다.
주)Dim BookNo(A To B) As Integer 라고 선언을 하는 경우 A 나 B 가 변수일 경우에는 오류가 납니다.
여기에서 변수를 대입해도 오류가 나지 않는 다면 동적 배열이 필요가 없겠지요. A, B가 상수인 경우에는
오류가 나지 않습니다.
Dim Attendy() As String
괄호 안의 숫자만 없지요... 그리고 사용할 경우에 배열의 크기를 정할 수 있는 항목의 번호를 아는 경우에 ReDim
문을 사용해서 배열의 크기를 할당합니다. Redim 다음에는 데이터타입은 재정의하지 않습니다.
ReDim Attendy(12)
Redim 문을 이용해서 배열을 재정의 하는경우에 배열이 가지는 초기값은 배열의 데이터 타입에 따라서
달라집니다. 숫자형인 경우 0, 문자형인 경우 "", Variant 형인 경우 Empty 로 초기화 됩니다.
이와 같이 크기를 설정합니다. 설정한 후에 다시 크기를 변경 또한 가능합니다.
ReDim Attendy(12)
....
ReDim Attendy(24)
13개의 배열 크기를 지정했다가, 다시 25개의 배열 크기로 늘렸습니다. 이러한 경우 주의 할 점은
이전에 작업한 13개의 배열의 값은 다시 초기화됩니다. 값이 없어진다는 것이지요. 이전 값을 보존
함면서 배열을 크기를 늘리려면 Preserve 를 사용해야합니다.
ReDim Attendy(12)
....
ReDim Preserve Attendy(24)
Preserve 를 사용하면 이전에 할당했던 13개의 값이 그대로 보존되면서 12개의 배열이 추가로 생성됩니다.
배열을 사용하는 경우 위와 같이 크기를 직접 정해주는 경우도 있지만, VB에서 제공하는 Split 함수 등을
이용하면 배열의 크기를 알 수 없을 경우가 있습니다. 이럴 경우에 배열에 할당 된 개수를 알기위해서는
UBound 문을 사용할 수 있습니다.
LBound(배열변수명) - 배열의 가장 작은 인덱스
UBound(배열변수명) - 배열의 가장 큰 인덱스
위 두 함수로 배열의 범위를 알 수가 있습니다.
배열에는 다차원 배열이 있습니다.
VB 에는 60 차원까지의 배열을 만들 수 있습니다. 정의하는 방법은 , 를 이용해서 차원을 분리합니다.
2차원 배열
Dim XY( 3, 3) As Integer
3차원 배열
Dim YXZ( 3, 6, 2) As Integer
여러 차원을 활용하면 중복되는 변수의 사용을 줄일 수 있습니다. 대게는 2차원 이상 갈일은 거의 없는듯 하네요...