リレーション(関連付け)

ワークシートの追加

Excelのワークシートを一枚追加し、シート名を「関連付け」とします。
B2セルから順番に氏名、郵便番号、住所、電話番号、会社コード、会社コード、勤務先名、郵便番号、住所、電話番号とします。
F2とF3は結合してもかまいません。




各セルの幅は後で調整しますので、幅に拘らなくてかまいません。
F列は表示しないように設定しておきます。

F列全体を選択し、右クリックでダイアログを表示させて「表示しない(H)」をクリックします。






関連付けボタン

ワークシートにラベルを一つとコントロールボタンを一つ貼り付け、オブジェクト名を「btn関連付け」、Captionを「リレーション」とします。




「リレーション」ボタンをダブルクリックしてコードウィンドウを開き、次のプログラムを記述します。
01:Private Sub btn関連付け_Click()
02:  Dim reccount As Long
03:  Dim where_status As String
04:  Dim statements As Integer
05:
06:  statements = Database_open
07:  If (statements <> 0) Then
08:      Exit Sub
09:  End If
10:
11:  Worksheets("関連付け").Activate
12:  where_status = "WHERE addresstb2.k_code = k_addresstb.k_code"
13:  reccount = Table_ALLload("addresstb2,k_addresstb", _ 
14:             "B3", where_status)
15:  statements = Database_close
16:End Sub
標準モジュールのユーザー関数を開き、次のプログラムを記述します。
01:Function Table_ALLload(Table_name As String, _
02:     cell_number As String, where_status As String) As Long
03:  Dim sql As String
04:  On Error GoTo ERR_statements
05:
06:  Set record_set = New ADODB.Recordset
07:
08:  sql = "SELECT * FROM " & Table_name & " " & where_status
09:  record_set.Open sql, connect
10:  If (record_set.EOF = False) Then
11:      record_set.MoveFirst
12:      Range(cell_number).CopyFromRecordset record_set
13:      Table_ALLload = Range(cell_number).End(xlDown).Row - 1
14:      If (Table_ALLload = CELL_END) Then
15:          Table_ALLload = 1
16:      End If
17:  Else
18:      Table_ALLload = 0
19:  End If
20:  record_set.Close
21:
22:ERR_statements:
23:  If (Err.Number <> 0) Then
24:      Call MsgBox("一致レコードがありません。")
25:  End If
26:  Set record_set = Nothing
27:End Function



© AstroHeart. All Rights Reserved.