Microsoft Access Club >AccessTips >このページ >次頁 <前項  サイト内検索


配列の利用 Split関数 : AccessTips127



配列 --- Accessでは中々分かりづらい関数です。敢えて使用しなくても何とかなってしまう、と言うか、プログラムを組めてしまうからでしょうか?

配列とは

配列とは、1つの部屋に入れられた値の集合体である、と言っても何がなんだか判らないと思います。使い方や実列を実際に目で見て理解を深めていきましょう。
なお、今回、ご紹介するSplit関数はAccess2000バージョンから標準装備された関数ですから、Access97、95をご利用の方は参考程度にお読み下さい。

Split関数

Split関数は、各要素ごとに区切られた文字列から 1 次元配列を作成し返します。

Sub TestSub()

    Dim Vartemp As Variant

    Vartemp = Split("桜,梅,ひまわり,チューリップ", ",")
    Debug.Print Vartemp(0)
    Debug.Print Vartemp(1)
    Debug.Print Vartemp(2)
    Debug.Print Vartemp(3)
    
End Sub

このプロシージャを実行すると、イミディエイトウィンドウに以下のように表示されます。

TestSub


ひまわり
チューリップ
  1. 各要素は、0から始まります。
  2. 区切り記号は自由に設定できます。例えば、Vartemp = Split("桜/梅/ひまわり/チューリップ", "/")と書き換えることも可能です。

サンプルテーブル

サンプルテーブル(tbl_sample)として、以下のようなものを用意します。フィールド名「好きな花」にはデータをカンマ(,)で羅列しています。

ID 生徒名 好きな花
1 松田恭子 桜,梅,バラ,チューリップ
2 篠原里香 バラ,桔梗,桜,ひまわり,朝顔
3 北川真知子 タンポポ,桜,チューリップ
4 松下加奈 シクラメン,梅,ひまわり

このテーブルデータを作成する際、各生徒には「好きな花を5つまで述べなさい」と伝えました。その結果として、松下加奈は3個の花を、篠原里香は5個の花を挙げたわけです。

通常、このような場合のテーブル構成は、以下のようにしていました。

ID 生徒名 好きな花1 好きな花2 好きな花3 好きな花4 好きな花5
1 松田恭子 バラ チューリップ  
2 篠原里香 バラ 桔梗 ひまわり 朝顔
3 北川真知子 タンポポ チューリップ (空白) (空白)
4 松下加奈 シクラメン ひまわり (空白) (空白)

または、以下のように生徒名を重複させてデータを格納する方法を採用したりします。

ID 生徒名 好きな花
1 松田恭子
2 松田恭子
3 松田恭子 バラ
4 松田恭子 チューリップ
5 篠原里香 バラ
6 篠原里香 桔梗
7 篠原里香
8 篠原里香 ひまわり
9 篠原里香 朝顔
(以下続く) (以下続く) (以下続く)

このように見ても配列の利用方法は中々浮かんできませんね。

配列を利用したサンプルフォーム

配列を用いた簡単なサンプルをご紹介しましょう。

  1. tbl_sampleテーブルを元に単票式のフォームを作成します。

  1. フィールド名「好きな花」(txt好きな花)の可視プロパティをいいえに設定し非表示にします。
  2. 新規にテキストボックス(txt好きな花一覧)を作成します。
  3. フォームのレコード移動時イベントプロシージャに以下の記述を行います。
Private Sub Form_Current()

    Dim VarSplit As Variant
    Dim VarTemp As Variant
    Dim a As Integer
    Dim b As Integer
    Dim c As Integer
    Dim i As Integer
    
    If Not IsNull(txt好きな花) Then
        VarSplit = Split(txt好きな花, ",")
    
        '区切りの個数を求める。
        a = Len(txt好きな花)
        For b = 1 To a
            'Mid関数を用いて、文字列の中から指定した文字数分の文字を取得します。
            If Mid(txt好きな花, b, 1) = "," Then
                c = c + 1
            End If
        Next

        For i = 0 To c
            'vbNewLineで改行します。
            VarTemp = VarTemp & IIf(Not IsNull(VarTemp), vbNewLine, "") & _
                        i + 1 & "." & VarSplit(i)
        Next
    
        Me.txt好きな花一覧 = VarTemp
    Else
        
        Me.txt好きな花一覧 = ""
        
    End If

End Sub
解説
  1. フォームビューで開きます。
  2. 以下のように、項目ごとに縦に並びます。

   

関連ページ

2005/05/31

ページの先頭へ 前ページへ戻る

 


配列の利用 Split関数 : AccessTips127


 

-Microsoft Access Club-