HOME > 即効テクニック > AccessVBA > コーディング・デバッグ > クラスの作成4(クラスの実装)

即効テクニック

コーディング・デバッグ

クラスの作成4(クラスの実装)

(Access 97)
●概要●
クラスの作成1〜3で説明したメソッドとプロパティの設定,参照を利用して実際に使用するクラスを作成します。メソッドの第1と第2引数をプロパティを設定することで取得させます。サンプルコードでは新たにClass2を作成して第1引数のデータ配列と第2引数のデータ数を設定または参照できるプロパティを作成しています。
●サンプルコード●
Private intData As Integer
Private dblArrenge As Variant

Public Property Let DataNumber(ByVal DataNumber As Integer)
    intData = DataNumber
 End Property

Public Property Get DataNumber() As Integer
 DataNumber = intData
End Property

Public Property Let Arrangement(ByVal Arrangement As Variant)
    dblArrenge = Arrangement
 End Property

Public Property Get Arrangement() As Variant
 Arrangement = dblArrenge
End Property

Public Function Sum() As Double
  
  Dim Counter As Integer
  Dim total As Variant
    For Counter = 1 To intData
      total = total + dblArrenge(Counter)
      Debug.Print total
    Next Counter
  Sum = total
  
End Function
●動作確認●
Sub Class_Sample4()
   Dim cn As New ADODB.Connection
  Dim rst As ADODB.Recordset
  Dim cls As Class2
  Dim tanka(300) As Variant
  Dim 合計 As Double
  Dim i As Integer
 
  Set cn = New ADODB.Connection
  cn.ConnectionString = _
    "Provider=microsoft.jet.oledb.4.0;" & _
    "Data Source=d:\NorthWind.mdb"
  cn.Open
 
  Set rst = New ADODB.Recordset
  rst.Source = "商品"
  rst.ActiveConnection = cn
  rst.CursorLocation = adUseClient
  rst.CursorType = adOpenDynamic
  rst.LockType = adLockOptimistic
  rst.Open

  With rst
    Do While Not .EOF
     i = i + 1
     tanka(i) = !単価
     .MoveNext
   Loop
  End With

  Set cls = New Class2
  cls.Arrangement = tanka()
  cls.DataNumber = rst.RecordCount
  合計 = cls.Sum()
  MsgBox 合計
 
  rst.Close
  cn.Close
  Set rst = Nothing
  Set cn = Nothing
  Set cls = Nothing
End Sub
(実行結果)
メッセージボックスに「73560」が表示されます。

●補足●
配列tanka()をByValで引き渡しているのでデータ型はVariantとしています。