MDAC 2.5 SDK - OLE DB Programmer's Reference
OLE DB Interfaces


 

IRowsetResynch::GetVisibleData

Gets the data in the data store that is visible to the transaction for the specified row.

HRESULT GetVisibleData
   (HROW       hRow,
   HACCESSOR   hAccessor,
   void *      pData);

Parameters

hRow

[in]
The handle of the row for which to get the visible data. This can be the handle of a row with a pending delete.

hAccessor

[in]
The handle of the accessor to use. If hAccessor is the handle of a null accessor (cBindings in IAccessor::CreateAccessor was zero), IRowsetResynch::GetVisibleData does not get any data values.

pData

[out]
A pointer to a buffer in which to return the data. The consumer allocates memory for this buffer.

Return Code

S_OK

The method succeeded. The status of all columns bound by the accessor is set to DBSTATUS_S_OK, DBSTATUS_S_ISNULL, or DBSTATUS_S_TRUNCATED.

DB_S_ERRORSOCCURRED

An error occurred while returning data for one or more columns, but data was successfully returned for at least one column.

E_FAIL

A provider-specific error occurred.

E_INVALIDARG

pData was a null pointer, and hAccessor was not a null accessor.

E_UNEXPECTED

ITransaction::Commit or ITransaction::Abort was called, and the object is in a zombie state.

DB_E_BADACCESSORHANDLE

hAccessor was invalid. It is possible for a reference accessor or an accessor that has a binding that uses provider-owned memory to be invalid for use with this method, even if the accessor is valid for use with IRowset::GetData or IRowsetChange::SetData.

DB_E_BADACCESSORTYPE

The specified accessor was not a row accessor.

DB_E_BADROWHANDLE

hRow was invalid.

DB_E_DELETEDROW

hRow referred to a row for which a deletion had been transmitted to the data store.

DB_E_ERRORSOCCURRED

Errors occurred while returning data for all columns. To determine what errors occurred, the consumer checks the status values.

DB_E_ABORTLIMITREACHED

The provider was unable to retrieve the visible data due to reaching a limit on the server, such as a query execution timing out.

DB_E_NEWLYINSERTED

DBPROP_STRONGIDENTITY was VARIANT_FALSE, and hRow referred to a row for which an insertion had been transmitted to the data store.

DB_E_NOTREENTRANT

The provider called a method from IRowsetNotify in the consumer that had not yet returned, and the provider does not support reentrancy in this method.

DB_E_PENDINGINSERT

The rowset was in delayed update mode, and hRow referred to a pending insert row.

Comments

If this method performs deferred accessor validation and that validation takes place before any data is transferred, it can also return any of the following return codes for the applicable reasons listed in the corresponding DBBINDSTATUS values in IAccessor::CreateAccessor:

E_NOINTERFACE
DB_E_BADBINDINFO
DB_E_BADORDINAL
DB_E_BADSTORAGEFLAGS
DB_E_UNSUPPORTEDCONVERSION

This method makes no logical change to the state of the object.

A consumer calls IRowsetResynch::GetVisibleData to retrieve the data in the data store that is visible to the transaction for the specified row. However, IRowsetResynch::GetVisibleData does not affect the values in the rowset's copy of the row.

If IRowsetResynch::GetVisibleData fails, the memory that pData points to is not freed but its contents are undefined. If before IRowsetResynch::GetVisibleData failed the provider had allocated any memory to be returned to the consumer, the provider frees this memory and does not return it to the consumer.