次の方法で共有


DAO で複数値を持つフィールドを操作する

複数値のフィールドは、DAO の Recordset オブジェクトとして表されます。 フィールドに対するレコードセットは、複数値を持つフィールドが含まれるテーブルに対するレコードセットの子です。 子のレコードセットをインスタンス化するには、次のようにして、複数値を持つフィールドの "Value/値" プロパティを使用します。

Set childRs = rs.<multi-valued field>.Value

次のコード例は、Tasks テーブルの AssignedTo フィールドの子のレコードセットをインスタンス化する方法を示しています。

Set rs  = db.OpenRecordSet("Tasks") 
Set childRs = rs.AssignedTo.Value 

子のレコードセットは、DAO の Recordset オブジェクトと同じ機能を持ちます。

次のコード例は、親のレコードセットとその子のレコードセットを反復処理する方法を示しています。 例では Tasks テーブル内のタスクを、そのタスクに割り当てられている人と共にイミディエイト ウィンドウに出力します。

Sub BrowseMultiValueField() 
   Dim db As Database 
   Dim rs As Recordset 
   Dim childRS As Recordset 
     
   Set db = CurrentDb() 
     
   ' Open a Recordset for the Tasks table. 
   Set rs = db.OpenRecordset("Tasks") 
   rs.MoveFirst 
     
   Do Until rs.EOF 
      ' Print the name of the task to the Immediate window. 
      Debug.Print rs!TaskName.Value 
         
      ' Open a Recordset for the multivalued field. 
      Set childRS = rs!AssignedTo.Value 
 
         ' Exit the loop if the multivalued field contains no records. 
         Do Until childRS.EOF 
             childRS.MoveFirst 
                     
             ' Loop through the records in the child recordset. 
             Do Until childRS.EOF 
                 ' Print the owner(s) of the task to the Immediate  
                 ' window. 
                 Debug.Print Chr(0), childRS!Value.Value 
                 childRS.MoveNext 
             Loop 
         Loop 
      rs.MoveNext 
   Loop 
End Sub

サポートとフィードバック

Office VBA またはこの説明書に関するご質問やフィードバックがありますか? サポートの受け方およびフィードバックをお寄せいただく方法のガイダンスについては、Office VBA のサポートおよびフィードバックを参照してください。