Reconciles the current version with a target version.
[Visual Basic .NET] Public Function Reconcile4 ( _ ByVal VersionName As String, _ ByVal acquireLock As Boolean, _ ByVal abortIfConflicts As Boolean, _ ByVal ChildWins As Boolean, _ ByVal ColumnLevel As Boolean _ ) As Boolean
[C#] public bool Reconcile4 ( string VersionName, bool acquireLock, bool abortIfConflicts, bool ChildWins, bool ColumnLevel );
[C++]
HRESULT Reconcile4(
BSTR VersionName,
VARIANT_BOOL acquireLock,
VARIANT_BOOL abortIfConflicts,
VARIANT_BOOL ChildWins,
VARIANT_BOOL ColumnLevel,
VARIANT_BOOL* foundConflicts
);
[C++]Parameters
VersionName [in] VersionName is a parameter of type BSTR acquireLock [in] acquireLock is a parameter of type VARIANT_BOOL abortIfConflicts [in] abortIfConflicts is a parameter of type VARIANT_BOOL ChildWins [in] ChildWins is a parameter of type VARIANT_BOOL ColumnLevel [in] ColumnLevel is a parameter of type VARIANT_BOOL foundConflicts [out, retval] foundConflicts is a parameter of type VARIANT_BOOL
Product Availability
Errors Returned
FDO_E_RECONICLE_VERSION_NOT_AVAILABLE: Unable to reconcile: the target version is currently being reconciled against.
FDO_E_VERSION_BEING_EDITED: Operation not allowed while the version is being edited.
FDO_E_VERSION_NOT_FOUND: The version could not be located.
Remarks
The Reconcile4 function reconciles the current source version with the specified target version. The target version must be an ancestor of the current version or an error will be returned. The target version name passed in is case-sensitive and should take the form {owner}.{version_name} for example, SDE.DEFAULT. The first Boolean argument acquireLock specifies if locks should be obtained or not - true acquires the lock, false does not acquire the locks. The second Boolean argument abortIfConflicts specifies if the reconcile process should abort the reconcile if conflicts are detected for any class. Ideally, the second Boolean is only set to true when performing a reconcile in an automated batch type environment where a user does not have the ability to interactively resolve conflicts. By default all conflicts are resolved in favor of the target version, but setting the third Boolean argument childWins to true all conflicts detected would be resolved in favor of the source version. By setting the Boolean argument columnLevel to true, conflicts are detected only when the same attribute is updated in the source and target versions. For example, if the source version has modified the parcel's owner attribute and the target version has modified the parcel's street address attribute the feature will not be in conflict. It is only when each version modifies the same attribute that the object will be in conflict.
If the returned Boolean value from Reconcile4 is true, then conflicts were detected. Otherwise no conflicts were detected.
A reconcile can only be performed if no other users are currently editing the version. As well, the target version cannot concurrently be reconciling by a second application. See IVersion::IVersionLocks for additional information on detecting version locks.
The Reconcile4 method provides the ability to
either acquire or not acquire the version locks during the
reconcile process. If the locks are not acquired the version is
able to be reconciled in parallel when other versions are currently
being reconciled. One may desire this functionality when there is
no intention of posting the version after the reconcile process. If
the intention is to "post" the version after performing the
reconcile, it is strongly recommended that the locks are
acquired.
If one does attempt to post after performing the reconcile, there
is a chance that the target version might have been modified since
the reconcile. In this case, an FDO_E_VERSION_REDEFINED
error will be raised informing you that the version has been
redefined. The version will have to be re-reconciled. Therefore,
the first reconcile is a waste of server and client system
resources.
Calling IVersionEdit4::Reconcile4 will
abort the current edit operation therefore any edits made within an
open edit operation when reconcile is called will be lost. If there
is an open edit operation it is good practice to call
StopEditOperation prior to calling
Reconcile