Inherited Property
Applies To
Property object.
Description
Returns a value that indicates whether a Property object is inherited from an underlying object.
Return Values
The return value is a Boolean data type that is True if the Property object is inherited. For built-in Property objects that represent predefined properties, the only possible return value is False. This property is always False in an ODBCDirect workspace.
Remarks
You can use the Inherited property to determine whether a user-defined Property was created for the object it applies to, or whether the Property was inherited from another object. For example, suppose you create a new Property for a QueryDef object and then open a Recordset object from the QueryDef object. This new Property will be part of the Recordset object's Properties collection, and its Inherited property will be set to True because the property was created for the QueryDef object, not the Recordset object.
See Also
CreateProperty method.
Specifics (Microsoft Access)
Microsoft Access defines a number of properties that apply to Data Access Objects. Because these properties are defined by Microsoft Access, the Microsoft Jet database engine doesn't recognize them automatically. To set one of these properties by using Visual Basic, you must first create the property by using the CreateProperty method and then append it to the Properties collection of the object. For more information, see the Property object.
When you create an object based on another object, the derived object inherits the properties of the original object. You can use the Inherited property to determine whether one of these properties was created for the object it is applied to, or if the property was inherited from another object.
For example, suppose you want to set the Microsoft Access DatasheetFontName property for a TableDef object. If you are setting this property for the first time, you will need to create a corresponding Property object and append it to the Properties collection of the TableDef object. The Inherited property of the new Property object returns False (0).
If you then create a new QueryDef object based on the table corresponding to the TableDef object, the DatasheetFontName property will be included in the Properties collection of the QueryDef object. The Inherited property of a Property object corresponding to this property returns True (–1).
Example
This example use the Inherited property to determine if a user-defined Property object was created for a Recordset object or for some underlying object.
Sub InheritedX()
Dim dbsNorthwind As Database
Dim tdfTest As TableDef
Dim rstTest As Recordset
Dim prpNew As Property
Dim prpLoop As Property
' Create a new property for a saved TableDef object, then
' open a recordset from that TableDef object.
Set dbsNorthwind = OpenDatabase("Northwind.mdb")
Set tdfTest = dbsNorthwind.TableDefs(0)
Set prpNew = tdfTest.CreateProperty("NewProperty", _
dbBoolean, True)
tdfTest.Properties.Append prpNew
Set rstTest = tdfTest.OpenRecordset(dbOpenForwardOnly)
' Show Name and Inherited property of the new Property
' object in the TableDef.
Debug.Print "NewProperty of " & tdfTest.Name & _
" TableDef:"
Debug.Print " Inherited = " & _
tdfTest.Properties("NewProperty").Inherited
' Show Name and Inherited property of the new Property
' object in the Recordset.
Debug.Print "NewProperty of " & rstTest.Name & _
" Recordset:"
Debug.Print " Inherited = " & _
rstTest.Properties("NewProperty").Inherited
' Delete new TableDef because this is a demonstration.
tdfTest.Properties.Delete prpNew.Name
dbsNorthwind.Close
End Sub
Example (Microsoft Access)
The following example creates a Property object in the Properties collection of a TableDef object, and then creates a new QueryDef object based on the same table. The Property object automatically exists in the Properties collection of the new QueryDef object. Next, the procedure checks the Inherited property for the Property objects in the Properties collections of both the TableDef and the QueryDef objects.
In this example, the Microsoft Access DatasheetFontItalic property is created and appended to the Properties collection of the TableDef object. The DatasheetFontItalic property is defined by Microsoft Access rather than by the Microsoft Jet database engine. However, the property applies to DAO objects. Therefore, in order to set it from Visual Basic code, you must first create a Property object corresponding to that property and append it to the Properties collection of the DAO object. It's necessary to create the property only the first time you set it.
Sub CheckInherited()
Dim dbs As Database, tdf As TableDef, qdf As QueryDef
Dim strSQL As String
' Return reference to current database.
Set dbs = CurrentDb
' Return reference to Orders table.
Set tdf = dbs.TableDefs!Orders
' Call SetAccessProperty function.
If SetAccessProperty(tdf, "DatasheetFontItalic", _
dbBoolean, True) = True Then
' Create QueryDef object based on Orders table.
strSQL = "SELECT * FROM Orders WHERE ShipCountry = 'USA';"
Set qdf = dbs.CreateQueryDef("USAOrders", strSQL)
' Return Property object pointing to property.
Debug.Print "Value of Inherited, TableDef object:", _
tdf.Properties!DatasheetFontItalic.Inherited
Debug.Print "Value of inherited, QueryDef object:", _
qdf.Properties!DatasheetFontItalic.Inherited
ExitCheckInherited
Else
MsgBox "Property not set successfully."
ExitCheckInherited
End If
ExitCheckInherited:
Set dbs = Nothing
Exit Sub
End Sub
This procedure calls the following function, which sets the property, creating it in the Properties collection if necessary:
Function SetAccessProperty(obj As Object, strName As String, _
intType As Integer, varSetting As Variant) As Boolean
Dim prp As Property
Const conPropNotFound As Integer = 3270
On Error GoTo ErrorSetAccessProperty
' Explicitly refer to Properties collection.
obj.Properties(strName) = varSetting
obj.Properties.Refresh
SetAccessProperty = True
ExitSetAccessProperty:
Exit Function
ErrorSetAccessProperty:
If Err = conPropNotFound Then
' Create property, denote type, and set initial value.
Set prp = obj.CreateProperty(strName, intType, varSetting)
' Append Property object to Properties collection.
obj.Properties.Append prp
obj.Properties.Refresh
SetAccessProperty = True
Resume ExitSetAccessProperty
Else
MsgBox Err & ": " & vbCrLf & Err.Description
SetAccessProperty = False
Resume ExitSetAccessProperty
End If
End Function