Updatable Property
Applies To
Connection object, Database object, Dynamic-Type Recordset object, Dynaset-Type Recordset object, Forward-Only-Type Recordset object, QueryDef object, Recordset object, Snapshot-Type Recordset object, Table-Type Recordset object, TableDef object.
Description
Returns a value that indicates whether you can change a DAO object.
Return Values
The return value is a Boolean data type that is True if the object can be changed or updated. (Snapshot- and forward-only-type Recordset objects always return False.)
Remarks
Depending on the object, if the Updatable property setting is True, the associated statement in the following table is true.
Object | Type indicates |
|
Database | The object can be changed. |
QueryDef | The query definition can be changed. |
Recordset | The records can be updated. |
TableDef | The table definition can be changed. |
The Updatable property setting is always True for a newly created TableDef object and False for a linked TableDef object. A new TableDef object can be appended only to a database for which the current user has write permission.
Many types of objects can contain fields that can't be updated. For example, you can create a dynaset-type Recordset object in which only some fields can be changed. These fields can be fixed or contain data that increments automatically, or the dynaset can result from a query that combines updatable and nonupdatable tables.
If the object contains only read-only fields, the value of the Updatable property is False. When one or more fields are updatable, the property's value is True. You can edit only the updatable fields. A trappable error occurs if you try to assign a new value to a read-only field.
The Updatable property of a QueryDef object is set to True if the query definition can be updated, even if the resulting Recordset object isn't updatable.
Because an updatable object can contain read-only fields, check the DataUpdatable property of each field in the Fields collection of a Recordset object before you edit a record.
See Also
Field object.
Example
This example demonstrates the Updatable property for a Database, four types of Recordset objects, a TableDef, and a QueryDef.
Sub UpdatableX()
Dim dbsNorthwind As Database
Dim rstEmployees As Recordset
Set dbsNorthwind = OpenDatabase("Northwind.mdb")
With dbsNorthwind
Debug.Print .Name
Debug.Print " Updatable = " & .Updatable
' Default is dbOpenTable.
Set rstEmployees = .OpenRecordset("Employees")
Debug.Print _
"Table-type recordset from Employees table"
Debug.Print " Updatable = " & _
rstEmployees.Updatable
rstEmployees.Close
Set rstEmployees = .OpenRecordset("Employees", _
dbOpenDynaset)
Debug.Print _
"Dynaset-type recordset from Employees table"
Debug.Print " Updatable = " & _
rstEmployees.Updatable
rstEmployees.Close
Set rstEmployees = .OpenRecordset("Employees", _
dbOpenSnapshot)
Debug.Print _
"Snapshot-type recordset from Employees table"
Debug.Print " Updatable = " & _
rstEmployees.Updatable
rstEmployees.Close
Set rstEmployees = .OpenRecordset("Employees", _
dbOpenForwardOnly)
Debug.Print _
"Forward-only-type recordset from Employees table"
Debug.Print " Updatable = " & _
rstEmployees.Updatable
rstEmployees.Close
Debug.Print "'" & .TableDefs(0).Name & "' TableDef"
Debug.Print " Updatable = " & _
.TableDefs(0).Updatable
Debug.Print "'" & .QueryDefs(0).Name & "' QueryDef"
Debug.Print " Updatable = " & _
.QueryDefs(0).Updatable
.Close
End With
End Sub
Example (Microsoft Access)
The following example adds a record to a Recordset object if the object's Updatable property setting is True ( – 1).
Sub UpdateData()
Dim dbs As Database, rstUnknown As Recordset
' Return reference to current database.
Set dbs = CurrentDb
' Open table-type Recordset object.
Set rstUnknown = dbs.OpenRecordset("Unfamiliar Table")
' Check Updatable property before adding new record.
If rstUnknown.Updatable = True Then
With rstUnknown
.AddNew
!SomeField = "Some new data"
.Update
End With
End If
rstUnknown.Close
Set dbs = Nothing
End Sub
Example (Microsoft Excel)
This example prompts the user to select a cell that contains a value for the CONTACT field of the Customer recordset in the Nwindex.mdb database. The example then checks to see whether the recordset can be updated. If so, the example adds a new record to the recordset, using the value in the selected cell.
To create the Nwindex.mdb database, run the Microsoft Excel example for the CreateDatabase method.
Dim db As Database, rs As Recordset
Sheets("Sheet1").Activate
cellToCopy = Application.InputBox("What cell value do you want" _
& " to update as contact?", Type:=8)
If cellToCopy = False Then ' User cancelled InputBox.
Exit Sub
End If
Set db = Workspaces(0).OpenDatabase(Application.Path & "\NWINDEX.MDB")
Set rs = db.OpenRecordset("Customer")
If rs.Updatable = True Then
rs.AddNew
rs("CONTACT") = cellToCopy
rs.Update
rs.MoveLast
MsgBox "The new contact is " & rs("CONTACT").Value
Else
MsgBox "The recordset cannot be modified."
End If
rs.Close
db.Close