With the code below you will see that 2 is the value of the phone number while 3 is the phone type.

Public Sub GetPhoneValues()
    Dim oStu As cEAStudent
    Set oStu = New cEAStudent
    oStu.Init fe_application.SessionContext
    oStu.Load 761 '761 = Michael Clark
    
    Debug.Print oStu.Fields(EASTUDENTS_fld_FIRSTNAME) & " " & oStu.Fields(EASTUDENTS_fld_LASTNAME)
    
    Dim oAddHeader As IBBAddressHeader
    Dim oPhoneHeader As IBBPhoneHeader
    Dim oPhoneHeaders As IBBPhoneHeaders
    
    Dim oPhone As IBBPhone
    
    For Each oAddHeader In oStu.Address
        Debug.Print oAddHeader.Address.Fields(ADDRESS_fld_ADDRESSBLOCK)
        Debug.Print "ADDRESSID: " & oAddHeader.Address.Fields(ADDRESS_fld_ADDRESSID) & " Primary? " & _
        oAddHeader.AddressOptions.Fields(ADDRESSOPTIONS_fld_EA_PRIMARYADDRESS)
                
        Set oPhoneHeaders = oAddHeader.PhoneHeaders
        
        For Each oPhoneHeader In oPhoneHeaders
            Set oPhone = oPhoneHeader.Phone
            
            Dim i As Long
            i = 1
            Debug.Print "==="
            Do While i < 10
                Debug.Print "Enumerated Value = " & i & " - " & oPhone.Fields(i)
                i = i + 1
            Loop

        Next oPhoneHeader
                
    Next oAddHeader
    
    oStu.CloseDown
    Set oStu = Nothing
    Set oPhone = Nothing
    Set oPhoneHeaders = Nothing
        
End Sub

Disclaimer: We provide programming examples for illustration only, without warranty either expressed or implied, including, but not limited to, the implied warranties of merchantability and/or fitness for a particular purpose. This article assumes you are familiar with Structured Query Language and the tools used to create and modify SQL statements and Crystal Reports. Our Customer Support may help explain the functionality of a particular procedure, but we will not modify, or assist you with modifying, these examples to provide additional functionality.