ConflictTable Property
Applies To
TableDef object.
Description
Returns the name of a conflict table containing the database records that conflicted during the synchronization of two replicas (Microsoft Jet workspaces only).
Return Values
The return value is a String data type that is a zero-length string if there is no conflict table or the database isn't a replica.
Remarks
If two users at two separate replicas each make a change to the same record in the database, the changes made by one user will fail to be applied to the other replica. Consequently, the user with the failed change must resolve the conflicts.
Conflicts occur at the record level, not between fields. For example, if one user changes the Address field and another updates the Phone field in the same record, then one change is rejected. Because conflicts occur at the record level, the rejection occurs even though the successful change and the rejected change are unlikely to result in a true conflict of information.
The synchronization mechanism handles the record conflicts by creating conflict tables, which contain the information that would have been placed in the table, if the change had been successful. You can examine these conflict tables and work through them row by row, fixing whatever is appropriate.
All conflict tables are named table_conflict, where table is the original name of the table, truncated to the maximum table name length.
See Also
Synchronize method.
Example
This example uses the ConflictTable property to report the table names that had conflicts during synchronization.
Sub ConflictTableX()
Dim dbsNorthwind As Database
Dim tdfTest As TableDef
Set dbsNorthwind = OpenDatabase("Northwind.mdb")
' Enumerate TableDefs collection and check ConflictTable
' property of each.
For Each tdfTest In dbsNorthwind.TableDefs
If tdfTest.ConflictTable <> "" Then _
Debug.Print tdfTest.Name & " had a conflict."
Next tdfTest
dbsNorthwind.Close
End Sub
This example opens a Recordset from the conflict table and one from the table that caused the conflict. It then processes the records in these tables, using the RequiredDate field to copy information from one table to the other depending on which record was more recently updated.
Sub ConflictTableX2(dbsResolve As Database)
Dim tdfTest As TableDef
Dim rstSource As Recordset
Dim rstConflict As Recordset
Dim fldLoop As Field
Set tdfTest = dbsResolve.TableDefs("Orders")
If tdfTest.ConflictTable <> "" Then
Set rstSource = dbsResolve.OpenRecordset( _
tdfTest.Name, dbOpenTable)
Set rstConflict = dbsResolve.OpenRecordset( _
tdfTest.ConflictTable, dbOpenTable)
rstSource.Index = "[d_Guid]"
rstConflict.MoveFirst
Do Until rstConflict.EOF
rstSource.Seek "=", rstConflict![s_Guid]
If Not rstSource.NoMatch Then
If rstSource!RequiredDate < _
rstConflict!RequiredDate Then
On Error Resume Next
For Each fldLoop in rstConflict.Fields
fldLoop = rstSource(fldLoop.Name)
Next fldLoop
On Error Goto 0
End If
End If
rstConflict.Delete
rstConflict.MoveNext
Loop
rstConflict.Close
rstSource.Close
End If
End Sub