RecordStatus and DefaultCursorDriver Properties Example

This example uses the RecordStatus and DefaultCursorDriver properties to show how changes to a local Recordset are tracked during batch updating. The RecordStatusOutput function is required for this procedure to run.

Sub RecordStatusX()

    Dim wrkMain As Workspace
    Dim conMain As Connection
    Dim rstTemp As Recordset

    Set wrkMain = CreateWorkspace("ODBCWorkspace", _
        "admin", "", dbUseODBC)
    ' This DefaultCursorDriver setting is required for
    ' batch updating.
    wrkMain.DefaultCursorDriver = dbUseClientBatchCursor

    Set conMain = wrkMain.OpenConnection("Publishers", _
        dbDriverNoPrompt, False, _
        "ODBC;DATABASE=pubs;UID=sa;PWD=;DSN=Publishers")
    ' The following locking argument is required for
    ' batch updating.
    Set rstTemp = conMain.OpenRecordset( _
        "SELECT * FROM authors", dbOpenDynaset, 0, _
        dbOptimisticBatch)

    With rstTemp
        .MoveFirst
        Debug.Print "Original record: " & !au_lname
        Debug.Print , RecordStatusOutput2(.RecordStatus)

        .Edit
        !au_lname = "Bowen"
        .Update
        Debug.Print "Edited record: " & !au_lname
        Debug.Print , RecordStatusOutput2(.RecordStatus)

        .AddNew
        !au_lname = "NewName"
        .Update
        Debug.Print "New record: " & !au_lname
        Debug.Print , RecordStatusOutput2(.RecordStatus)

        .Delete
        Debug.Print "Deleted record: " & !au_lname
        Debug.Print , RecordStatusOutput2(.RecordStatus)

        ' Close the local recordset without updating the
        ' data on the server.
        .Close
    End With

    conMain.Close
    wrkMain.Close

End Sub

Function RecordStatusOutput(lngTemp As Long) As String

    Dim strTemp As String

    strTemp = ""

    ' Construct an output string based on the RecordStatus
    ' value.
If lngTemp = dbRecordUnmodified Then _
        strTemp = "[dbRecordUnmodified]"
    If lngTemp = dbRecordModified Then _
        strTemp = "[dbRecordModified]"
    If lngTemp = dbRecordNew Then _
        strTemp = "[dbRecordNew]"
    If lngTemp = dbRecordDeleted Then _
        strTemp = "[dbRecordDeleted]"
    If lngTemp = dbRecordDBDeleted Then _
        strTemp = "[dbRecordDBDeleted]"

    RecordStatusOutput = strTemp

End Function