Macros y funciones globales para las plantillas de consumidor OLE DB

Las plantillas de consumidor OLE DB incluyen las siguientes macros y funciones globales:

Funciones globales

Nombre Descripción
AtlTraceErrorRecords Vuelca la información del registro de errores de OLE DB en el dispositivo de volcado si se devuelve un error.

Macros de asignación de descriptores de acceso

Nombre Descripción
BEGIN_ACCESSOR Marca el principio de una entrada del descriptor de acceso.
BEGIN_ACCESSOR_MAP Marca el principio de las entradas de asignación de descriptores de acceso.
END_ACCESSOR Marca el final de una entrada del descriptor de acceso.
END_ACCESSOR_MAP Marca el final de las entradas de asignación de descriptores de acceso.

Macros de asignación de columnas

Nombre Descripción
BEGIN_COLUMN_MAP Marca el principio de las entradas de asignación de columnas en la clase de registro de usuario.
BLOB_ENTRY Se usa para enlazar un objeto binario grande (BLOB).
BLOB_ENTRY_LENGTH Informa de la longitud de la columna de datos del BLOB.
BLOB_ENTRY_LENGTH_STATUS Informa de la longitud y el estado de la columna de datos del BLOB.
BLOB_ENTRY_STATUS Informa del estado de la columna de datos del BLOB.
BLOB_NAME Se usa para enlazar un objeto binario grande por nombre de columna.
BLOB_NAME_LENGTH Informa de la longitud de la columna de datos del BLOB.
BLOB_NAME_LENGTH_STATUS Informa de la longitud y el estado de la columna de datos del BLOB.
BLOB_NAME_STATUS Informa del estado de la columna de datos del BLOB.
BOOKMARK_ENTRY Representa una entrada de marcador en el conjunto de filas. Una entrada de marcador es un tipo especial de entrada de columna.
COLUMN_ENTRY Representa un enlace a una columna específica de la base de datos.
COLUMN_ENTRY_EX Representa un enlace a la columna específica de la base de datos. Admite parámetros de tipo, longitud, precisión, escala y estado.
COLUMN_ENTRY_LENGTH Representa un enlace a la columna específica de la base de datos. Admite la variable longitud.
COLUMN_ENTRY_LENGTH_STATUS Representa un enlace a la columna específica de la base de datos. Admite los parámetros de estado y longitud.
COLUMN_ENTRY_PS Representa un enlace a la columna específica de la base de datos. Admite los parámetros de precisión y escala.
COLUMN_ENTRY_PS_LENGTH Representa un enlace a la columna específica de la base de datos. Admite la variable de longitud y los parámetros de precisión y escala.
COLUMN_ENTRY_PS_LENGTH_STATUS Representa un enlace a la columna específica de la base de datos. Admite las variable de estado y longitud y los parámetros de precisión y escala.
COLUMN_ENTRY_PS_STATUS Representa un enlace a la columna específica de la base de datos. Admite la variable de estado y los parámetros de precisión y escala.
COLUMN_ENTRY_STATUS Representa un enlace a la columna específica de la base de datos. Admite la variable de estado.
COLUMN_ENTRY_TYPE Representa un enlace a una columna específica de la base de datos. Admite el parámetro de tipo.
COLUMN_ENTRY_TYPE_SIZE Representa un enlace a la columna específica de la base de datos. Admite los parámetros de tipo y tamaño.
COLUMN_NAME Representa un enlace a una columna específica de la base de datos por nombre.
COLUMN_NAME_EX Representa un enlace a una columna específica de la base de datos por nombre. Admite la especificación del tipo de datos, el tamaño, la precisión, la escala, la longitud de la columna y el estado de la columna.
COLUMN_NAME_LENGTH Representa un enlace a una columna específica de la base de datos por nombre. Admite la especificación de la longitud de columna.
COLUMN_NAME_LENGTH_STATUS Representa un enlace a una columna específica de la base de datos por nombre. Admite la especificación de la longitud y el estado de la columna.
COLUMN_NAME_PS Representa un enlace a una columna específica de la base de datos por nombre. Admite la especificación de la precisión y la escala.
COLUMN_NAME_PS_LENGTH Representa un enlace a una columna específica de la base de datos por nombre. Admite la especificación de la precisión, la escala y la longitud de la columna.
COLUMN_NAME_PS_LENGTH_STATUS Representa un enlace a una columna específica de la base de datos por nombre. Admite la especificación de la precisión, la escala, la longitud de la columna y el estado de la columna.
COLUMN_NAME_PS_STATUS Representa un enlace a una columna específica de la base de datos por nombre. Admite la especificación de la precisión, la escala y el estado de la columna.
COLUMN_NAME_STATUS Representa un enlace a una columna específica de la base de datos por nombre. Admite la especificación del estado de la columna.
COLUMN_NAME_TYPE Representa un enlace a una columna específica de la base de datos por nombre. Admite la especificación del tipo de datos.
COLUMN_NAME_TYPE_PS Representa un enlace a una columna específica de la base de datos por nombre. Admite la especificación del tipo de datos, la precisión y la escala.
COLUMN_NAME_TYPE_SIZE Representa un enlace a una columna específica de la base de datos por nombre. Admite la especificación del tipo de datos y el tamaño.
COLUMN_NAME_TYPE_STATUS Representa un enlace a una columna específica de la base de datos por nombre. Admite la especificación del tipo de datos y el estado de la columna.
END_COLUMN_MAP Marca el final de las entradas de asignación de la columna.

Macros de comandos

Nombre Descripción
DEFINE_COMMAND Especifica el comando que se usará para crear el conjunto de filas al usar la clase CCommand. Solo acepta tipos de cadena que coincidan con el tipo de aplicación especificado (ANSI o Unicode). Se recomienda que utilice DEFINE_COMMAND_EX en lugar de DEFINE_COMMAND.
DEFINE_COMMAND_EX Especifica el comando que se usará para crear el conjunto de filas al usar la clase CCommand. Admite aplicaciones ANSI y Unicode.

Macros de asignación de parámetros

Nombre Descripción
BEGIN_PARAM_MAP Marca el principio de las entradas de asignación de parámetros en la clase de registro de usuario.
END_PARAM_MAP Marca el final de las entradas de asignación de parámetros.
SET_PARAM_TYPE Especifica las macros COLUMN_ENTRY que siguen a la macro SET_PARAM_TYPE como entrada, salida o entrada/salida.

AtlTraceErrorRecords

Vuelca la información del registro de errores de OLE DB en el dispositivo de volcado si se devuelve un error.

Sintaxis

inline void AtlTraceErrorRecords(HRESULT hrErr = S_OK);

Parámetros

hErr
[in] Valor HRESULT devuelto por una función de miembro de plantilla de consumidor OLE DB.

Comentarios

Si hErr no es S_OK, AtlTraceErrorRecords vuelca la información del registro de errores de OLE DB en el dispositivo de volcado (la pestaña Depurar de la ventana Salida o un archivo). La información del registro de errores, que se obtiene del proveedor, incluye el número de fila, el origen, la descripción, el archivo de ayuda, el contexto y el GUID para cada entrada del registro de error. AtlTraceErrorRecords vuelca esta información solo en compilaciones de depuración. En las compilaciones de versión, es un código auxiliar vacío optimizado. Para obtener más información, vea CDBErrorInfo (clase).

BEGIN_ACCESSOR

Marca el principio de una entrada del descriptor de acceso.

Sintaxis

BEGIN_ACCESSOR(num, bAuto)

Parámetros

num
[in] Número de desplazamientos cero para el descriptor de acceso en esta asignación de descriptores de acceso.

bAuto
[in] Especifica si este descriptor de acceso es un descriptor de acceso automático o un descriptor de acceso manual. Si es true, el descriptor de acceso es automático; si es false, el descriptor de acceso es manual. Un descriptor de acceso automático significa que los datos se capturan automáticamente durante las operaciones de movimiento.

Comentarios

Si hay varios descriptores de acceso en un conjunto de filas, debe especificar BEGIN_ACCESSOR_MAP y usar la macro BEGIN_ACCESSOR para cada descriptor de acceso individual. La macro BEGIN_ACCESSOR se completa con la macro END_ACCESSOR. La macro BEGIN_ACCESSOR_MAP se completa con la macro END_ACCESSOR_MAP.

Ejemplo

Consulte BEGIN_ACCESSOR_MAP.

BEGIN_ACCESSOR_MAP

Marca el principio de las entradas de asignación de descriptores de acceso.

Sintaxis

BEGIN_ACCESSOR_MAP(x, num)

Parámetros

x
[in] Nombre de la clase de registro de usuario.

num
[in] Número de descriptores de acceso de esta asignación de descriptores de acceso.

Comentarios

Si hay varios descriptores de acceso en un conjunto de filas, debe especificar BEGIN_ACCESSOR_MAP al principio y usar la macro BEGIN_ACCESSOR para cada descriptor de acceso individual. La macro BEGIN_ACCESSOR se completa con la macro END_ACCESSOR. La asignación de descriptores de acceso se completa con la macro END_ACCESSOR_MAP.

Si solo tiene un descriptor de acceso en el registro de usuario, use la macro BEGIN_COLUMN_MAP.

Ejemplo

class CArtistsAccessor
{
public:
// Data Elements
   TCHAR m_szFirstName[21];
   TCHAR m_szLastName[31];
   short m_nAge;

// Output binding map
BEGIN_ACCESSOR_MAP(CArtistsAccessor, 2)
   BEGIN_ACCESSOR(0, true)
      COLUMN_ENTRY(1, m_szFirstName)
      COLUMN_ENTRY(2, m_szLastName)
   END_ACCESSOR()
   BEGIN_ACCESSOR(1, false) // Not an auto accessor
      COLUMN_ENTRY(3, m_nAge)
   END_ACCESSOR()
END_ACCESSOR_MAP()

   HRESULT OpenDataSource()
   {
      CDataSource _db;
      _db.Open();
      return m_session.Open(_db);
   }

   void CloseDataSource()
   {
      m_session.Close();
   }

   CSession m_session;

   DEFINE_COMMAND_EX(CArtistsAccessor, L" \
   SELECT \
      FirstName, \
      LastName, \
      Age \
      FROM Artists")
};

END_ACCESSOR

Marca el final de una entrada del descriptor de acceso.

Sintaxis

END_ACCESSOR()

Comentarios

Si hay varios descriptores de acceso en un conjunto de filas, debe especificar BEGIN_ACCESSOR_MAP y usar la macro BEGIN_ACCESSOR para cada descriptor de acceso individual. La macro BEGIN_ACCESSOR se completa con la macro END_ACCESSOR. La macro BEGIN_ACCESSOR_MAP se completa con la macro END_ACCESSOR_MAP.

Ejemplo

Consulte BEGIN_ACCESSOR_MAP.

END_ACCESSOR_MAP

Marca el final de las entradas de asignación de descriptores de acceso.

Sintaxis

END_ACCESSOR_MAP()

Comentarios

Si hay varios descriptores de acceso en un conjunto de filas, debe especificar BEGIN_ACCESSOR_MAP y usar la macro BEGIN_ACCESSOR para cada descriptor de acceso individual. La macro BEGIN_ACCESSOR se completa con la macro END_ACCESSOR. La macro BEGIN_ACCESSOR_MAP se completa con la macro END_ACCESSOR_MAP.

Ejemplo

Consulte BEGIN_ACCESSOR_MAP.

BEGIN_COLUMN_MAP

Marca el inicio de una entrada de mapa de columnas.

Sintaxis

BEGIN_COLUMN_MAP(x)

Parámetros

x
[in] Nombre de la clase de registro de usuario derivada de CAccessor.

Comentarios

Esta macro se usa en el caso de un único descriptor de acceso en un conjunto de filas. Si tiene varios descriptores de acceso en un conjunto de filas, use BEGIN_ACCESSOR_MAP.

La macro BEGIN_COLUMN_MAP se completa con la macro END_COLUMN_MAP. Esta macro se usa cuando solamente hay un descriptor de acceso necesario en el registro de usuario.

Las columnas corresponden a los campos del conjunto de filas que quiere enlazar.

Ejemplo

Este es un mapa de columnas y parámetros de ejemplo:

BLOB_ENTRY

Se usa con BEGIN_COLUMN_MAP y END_COLUMN_MAP para enlazar un objeto binario grande (BLOB).

Sintaxis

BLOB_ENTRY(nOrdinal, IID, flags, data)

Parámetros

nOrdinal
[in] Número de la columna.

IID
[in] GUID de interfaz, como IDD_ISequentialStream, que se usa para recuperar el BLOB.

flags
[in] Marcas en modo de almacenamiento definidas por el modelo de almacenamiento estructurado OLE (por ejemplo, STGM_READ).

data
[in] Miembro de datos correspondiente en el registro de usuario.

Ejemplo

Consulte ¿Cómo puedo recuperar un BLOB?.

BLOB_ENTRY_LENGTH

Se usa con BEGIN_COLUMN_MAP y END_COLUMN_MAP para enlazar un objeto binario grande (BLOB). Similar a BLOB_ENTRY, salvo que esta macro también obtiene la longitud en bytes de la columna BLOB.

Sintaxis

BLOB_ENTRY_LENGTH(nOrdinal, IID, flags, data, length)

Parámetros

nOrdinal
[in] Número de la columna.

IID
[in] GUID de interfaz, como IDD_ISequentialStream, que se usa para recuperar el BLOB.

flags
[in] Marcas en modo de almacenamiento definidas por el modelo de almacenamiento estructurado OLE (por ejemplo, STGM_READ).

data
[in] Miembro de datos correspondiente en el registro de usuario.

length
[out] Longitud (real) en bytes de la columna BLOB.

Ejemplo

Consulte ¿Cómo puedo recuperar un BLOB?.

BLOB_ENTRY_LENGTH_STATUS

Se usa con BEGIN_COLUMN_MAP y END_COLUMN_MAP para enlazar un objeto binario grande (BLOB). Similar a BLOB_ENTRY, salvo que esta macro también obtiene la longitud y el estado de la columna BLOB.

Sintaxis

BLOB_ENTRY_LENGTH_STATUS(
    nOrdinal,
    IID,
    flags,
    data,
    length,
    status )

Parámetros

nOrdinal
[in] Número de la columna.

IID
[in] GUID de interfaz, como IDD_ISequentialStream, que se usa para recuperar el BLOB.

flags
[in] Marcas en modo de almacenamiento definidas por el modelo de almacenamiento estructurado OLE (por ejemplo, STGM_READ).

data
[in] Miembro de datos correspondiente en el registro de usuario.

length
[out] Longitud (real) en bytes de la columna BLOB.

status
[out] Estado de la columna de datos BLOB.

Ejemplo

Consulte ¿Cómo puedo recuperar un BLOB?.

BLOB_ENTRY_STATUS

Se usa con BEGIN_COLUMN_MAP o BEGIN_ACCESSOR_MAP para enlazar un objeto binario grande (BLOB). Similar a BLOB_ENTRY, salvo que esta macro también obtiene el estado de la columna BLOB.

Sintaxis

BLOB_ENTRY_STATUS(nOrdinal, IID, flags, data, status)

Parámetros

nOrdinal
[in] Número de la columna.

IID
[in] GUID de interfaz, como IDD_ISequentialStream, que se usa para recuperar el BLOB.

flags
[in] Marcas en modo de almacenamiento definidas por el modelo de almacenamiento estructurado OLE (por ejemplo, STGM_READ).

data
[in] Miembro de datos correspondiente en el registro de usuario.

status
[out] Estado del campo BLOB.

Ejemplo

Consulte ¿Cómo puedo recuperar un BLOB?.

BLOB_NAME

Se usa con BEGIN_COLUMN_MAP y END_COLUMN_MAP para enlazar un objeto binario grande (BLOB). Similar a BLOB_ENTRY, salvo que esta macro toma un nombre de columna en lugar de un número de columna.

Sintaxis

BLOB_NAME(pszName, IID, flags, data )

Parámetros

pszName
[in] Puntero al nombre de columna. Debe ser una cadena Unicode. Para ello, coloque una "L" delante del nombre, por ejemplo: L"MyColumn".

IID
[in] GUID de interfaz, como IDD_ISequentialStream, que se usa para recuperar el BLOB.

flags
[in] Marcas en modo de almacenamiento definidas por el modelo de almacenamiento estructurado OLE (por ejemplo, STGM_READ).

data
[in] Miembro de datos correspondiente en el registro de usuario.

Ejemplo

Consulte ¿Cómo puedo recuperar un BLOB?.

BLOB_NAME_LENGTH

Se usa con BEGIN_COLUMN_MAP y END_COLUMN_MAP para enlazar un objeto binario grande (BLOB). Similar a BLOB_NAME, salvo que esta macro también obtiene la longitud en bytes de la columna de datos BLOB.

Sintaxis

BLOB_NAME_LENGTH(pszName, IID, flags, data, length )

Parámetros

pszName
[in] Puntero al nombre de columna. Debe ser una cadena Unicode. Para ello, coloque una "L" delante del nombre, por ejemplo: L"MyColumn".

IID
[in] GUID de interfaz, como IDD_ISequentialStream, que se usa para recuperar el BLOB.

flags
[in] Marcas en modo de almacenamiento definidas por el modelo de almacenamiento estructurado OLE (por ejemplo, STGM_READ).

data
[in] Miembro de datos correspondiente en el registro de usuario.

length
[out] Longitud (real) en bytes de la columna BLOB.

BLOB_NAME_LENGTH_STATUS

Se usa con BEGIN_COLUMN_MAP y END_COLUMN_MAP para enlazar un objeto binario grande (BLOB). Similar a BLOB_NAME, salvo que esta macro también obtiene la longitud y el estado de la columna de datos BLOB.

Sintaxis

BLOB_NAME_LENGTH_STATUS(pszName, IID, flags, data, length, status )

Parámetros

pszName
[in] Puntero al nombre de columna. Debe ser una cadena Unicode. Para ello, coloque una "L" delante del nombre, por ejemplo: L"MyColumn".

IID
[in] GUID de interfaz, como IDD_ISequentialStream, que se usa para recuperar el BLOB.

flags
[in] Marcas en modo de almacenamiento definidas por el modelo de almacenamiento estructurado OLE (por ejemplo, STGM_READ).

data
[in] Miembro de datos correspondiente en el registro de usuario.

length
[out] Longitud (real) en bytes de la columna BLOB.

status
[out] Estado del campo BLOB.

BLOB_NAME_STATUS

Se usa con BEGIN_COLUMN_MAP y END_COLUMN_MAP para enlazar un objeto binario grande (BLOB). Similar a BLOB_NAME, salvo que esta macro también obtiene el estado de la columna de datos BLOB.

Sintaxis

BLOB_NAME_STATUS(pszName, IID, flags, data, status )

Parámetros

pszName
[in] Puntero al nombre de columna. Debe ser una cadena Unicode. Para ello, coloque una "L" delante del nombre, por ejemplo: L"MyColumn".

IID
[in] GUID de interfaz, como IDD_ISequentialStream, que se usa para recuperar el BLOB.

flags
[in] Marcas en modo de almacenamiento definidas por el modelo de almacenamiento estructurado OLE (por ejemplo, STGM_READ).

data
[in] Miembro de datos correspondiente en el registro de usuario.

status
[out] Estado del campo BLOB.

BOOKMARK_ENTRY

Enlaza la columna de marcador.

Sintaxis

BOOKMARK_ENTRY(variable)

Parámetros

variable
[in] Variable que se va a enlazar a la columna de marcador.

Ejemplo

class CArtistsBookmark
{
public:
// Data Elements
   CBookmark<4> m_bookmark;
   short m_nAge;
   TCHAR m_szFirstName[21];
   TCHAR m_szLastName[31];

// Output binding map
BEGIN_COLUMN_MAP(CArtistsBookmark)
   BOOKMARK_ENTRY(m_bookmark)
   COLUMN_ENTRY(1, m_nAge)
   COLUMN_ENTRY(2, m_szFirstName)
   COLUMN_ENTRY(3, m_szLastName)
END_COLUMN_MAP()

   void GetRowsetProperties(CDBPropSet* pPropSet)
   {
      pPropSet->AddProperty(DBPROP_BOOKMARKS, true);
   }

   HRESULT OpenDataSource()
   {
      CDataSource _db;
      _db.Open();
      return m_session.Open(_db);
   }

   void CloseDataSource()
   {
      m_session.Close();
   }

   CSession m_session;

   DEFINE_COMMAND_EX(CArtistsBookmark, L" \
   SELECT \
      Age, \
      FirstName, \
      LastName \
      FROM Artists")
};

Para obtener más información, vea Uso de marcadores y CBookmark (clase).

COLUMN_ENTRY

Representa un enlace en el conjunto de filas a la columna específica del conjunto de filas.

Sintaxis

COLUMN_ENTRY(nOrdinal, data)

Parámetros

Consulte DBBINDING en la Referencia del programador de OLE DB.

nOrdinal
[in] Número de la columna.

data
[in] Miembro de datos correspondiente en el registro de usuario.

Comentarios

La macro COLUMN_ENTRY se usa en los siguientes lugares:

Ejemplo

Consulte los ejemplos de los temas de macro, BEGIN_COLUMN_MAP y BEGIN_ACCESSOR_MAP.

COLUMN_ENTRY_EX

Representa un enlace en el conjunto de filas a la columna específica de la base de datos.

Sintaxis

COLUMN_ENTRY_EX(nOrdinal, wType, nLength, nPrecision, nScale, data, length, status)

Parámetros

Consulte DBBINDING en la Referencia del programador de OLE DB.

nOrdinal
[in] Número de la columna.

wType
[in] Tipo de datos.

nLength
[in] Tamaño de los datos en bytes.

nPrecision
[in] Precisión máxima que se va a usar al obtener datos y wType es DBTYPE_NUMERIC. De lo contrario, se omite este parámetro.

nScale
[in] Escala que se va a usar al obtener datos y wType es DBTYPE_NUMERIC o DBTYPE_DECIMAL.

data
[in] Miembro de datos correspondiente en el registro de usuario.

length
[in] Variable que se va a enlazar a la longitud de la columna.

status
[in] Variable que se va a enlazar al estado de la columna.

Comentarios

La macro COLUMN_ENTRY_EX se usa en los siguientes lugares:

Ejemplo

Consulte BOOKMARK_ENTRY.

COLUMN_ENTRY_LENGTH

Representa un enlace en el conjunto de filas a la columna específica de la base de datos.

Sintaxis

COLUMN_ENTRY_LENGTH(nOrdinal, data, length)

Parámetros

Consulte DBBINDING en la Referencia del programador de OLE DB.

nOrdinal
[in] Número de columna, empezando por uno. El marcador corresponde a la columna cero.

data
[in] Miembro de datos correspondiente en el registro de usuario.

length
[in] Variable que se va a enlazar a la longitud de la columna.

Comentarios

Esta macro admite la variable longitud. Se usa en los siguientes lugares:

COLUMN_ENTRY_LENGTH_STATUS

Representa un enlace en el conjunto de filas a la columna específica de la base de datos.

Sintaxis

COLUMN_ENTRY_LENGTH_STATUS(nOrdinal, data, length, status)

Parámetros

Consulte DBBINDING en la Referencia del programador de OLE DB.

nOrdinal
[in] Número de la columna.

data
[in] Miembro de datos correspondiente en el registro de usuario.

length
[in] Variable que se va a enlazar a la longitud de la columna.

status
[in] Variable que se va a enlazar al estado de la columna.

Comentarios

Use esta macro cuando desee admitir variables de longitud y estado. Se usa en los siguientes lugares:

COLUMN_ENTRY_PS

Representa un enlace en el conjunto de filas a la columna específica del conjunto de filas.

Sintaxis

COLUMN_ENTRY_PS(nOrdinal, nPrecision, nScale, data)

Parámetros

Consulte DBBINDING en la Referencia del programador de OLE DB.

nOrdinal
[in] Número de la columna.

nPrecision
[in] Precisión máxima de la columna que desea enlazar.

nScale
[in] Escala de la columna que desea enlazar.

data
[in] Miembro de datos correspondiente en el registro de usuario.

Comentarios

Permite especificar la precisión y la escala de la columna que desea enlazar. Se usa en los siguientes lugares:

COLUMN_ENTRY_PS_LENGTH

Representa un enlace en el conjunto de filas a la columna específica de la base de datos.

Sintaxis

COLUMN_ENTRY_PS_LENGTH(nOrdinal, nPrecision, nScale, data, length)

Parámetros

Consulte DBBINDING en la Referencia del programador de OLE DB.

nOrdinal
[in] Número de columna, empezando por uno. El marcador corresponde a la columna cero.

nPrecision
[in] Precisión máxima de la columna que desea enlazar.

nScale
[in] Escala de la columna que desea enlazar.

data
[in] Miembro de datos correspondiente en el registro de usuario.

length
[in] Variable que se va a enlazar a la longitud de la columna.

Comentarios

Permite especificar la precisión y la escala de la columna que desea enlazar. Esta macro admite la variable longitud. Se usa en los siguientes lugares:

COLUMN_ENTRY_PS_LENGTH_STATUS

Representa un enlace en el conjunto de filas a la columna específica de la base de datos.

Sintaxis

COLUMN_ENTRY_PS_LENGTH_STATUS(nOrdinal, nPrecision, nScale, data, length, status)

Parámetros

Consulte DBBINDING en la Referencia del programador de OLE DB.

nOrdinal
[in] Número de la columna.

nPrecision
[in] Precisión máxima de la columna que desea enlazar.

nScale
[in] Escala de la columna que desea enlazar.

data
[in] Miembro de datos correspondiente en el registro de usuario.

length
[in] Variable que se va a enlazar a la longitud de la columna.

status
[in] Variable que se va a enlazar al estado de la columna.

Comentarios

Permite especificar la precisión y la escala de la columna que desea enlazar. Use esta macro cuando desee admitir variables de longitud y estado. Se usa en los siguientes lugares:

COLUMN_ENTRY_PS_STATUS

Representa un enlace en el conjunto de filas a la columna específica de la base de datos.

Sintaxis

COLUMN_ENTRY_PS_STATUS(nOrdinal, nPrecision, nScale, data, status)

Parámetros

Consulte DBBINDING en la Referencia del programador de OLE DB.

nOrdinal
[in] Número de la columna.

nPrecision
[in] Precisión máxima de la columna que desea enlazar.

nScale
[in] Escala de la columna que desea enlazar.

data
[in] Miembro de datos correspondiente en el registro de usuario.

status
[in] Variable que se va a enlazar al estado de la columna.

Comentarios

Permite especificar la precisión y la escala de la columna que desea enlazar. Esta macro admite la variable de estado. Se usa en los siguientes lugares:

COLUMN_ENTRY_STATUS

Representa un enlace en el conjunto de filas a la columna específica de la base de datos.

Sintaxis

COLUMN_ENTRY_STATUS(nOrdinal, data, status)

Parámetros

Consulte DBBINDING en la Referencia del programador de OLE DB.

nOrdinal
[in] Número de la columna.

data
[in] Miembro de datos correspondiente en el registro de usuario.

status
[in] Variable que se va a enlazar al estado de la columna.

Comentarios

Esta macro admite la variable de estado. Se usa en los siguientes lugares:

COLUMN_ENTRY_TYPE

Representa un enlace a la columna específica de la base de datos. Admite el parámetro de tipo.

Sintaxis

COLUMN_ENTRY_TYPE (nOrdinal, wType, data)

Parámetros

nOrdinal
[in] Número de la columna.

wType
[in] Tipo de datos de la entrada de la columna.

data
[in] Miembro de datos correspondiente en el registro de usuario.

Comentarios

Esta macro es una variante especializada de la macro COLUMN_ENTRY que proporciona un medio para especificar el tipo de datos.

COLUMN_ENTRY_TYPE_SIZE

Representa un enlace a la columna específica de la base de datos. Admite los parámetros de tipo y tamaño.

Sintaxis

COLUMN_ENTRY_TYPE_SIZE(nOrdinal, wType, nLength, data)

Parámetros

nOrdinal
[in] Número de la columna.

wType
[in] Tipo de datos de la entrada de la columna.

nLength
[in] Tamaño de la entrada de columna en bytes.

data
[in] Miembro de datos correspondiente en el registro de usuario.

Comentarios

Esta macro es una variante especializada de la macro COLUMN_ENTRY que proporciona un medio para especificar el tamaño y el tipo de datos.

COLUMN_NAME

Representa un enlace en el conjunto de filas a la columna específica del conjunto de filas. Similar a COLUMN_ENTRY, salvo que esta macro toma el nombre de la columna en lugar del número de la columna.

Sintaxis

COLUMN_NAME(pszName, data)

Parámetros

pszName
[in] Puntero al nombre de columna. Debe ser una cadena Unicode. Para ello, coloque una "L" delante del nombre, por ejemplo: L"MyColumn".

data
[in] Miembro de datos correspondiente en el registro de usuario.

Comentarios

Las macros COLUMN_NAME_* se usan en los mismos lugares que COLUMN_ENTRY:

COLUMN_NAME_EX

Representa un enlace en el conjunto de filas a la columna específica del conjunto de filas. Similar a COLUMN_NAME, salvo que esta macro también toma el tipo de datos, el tamaño, la precisión, la escala, la longitud de la columna y el estado de la columna.

Sintaxis

COLUMN_NAME_EX(pszName, wType, nLength, nPrecision, nScale, data, length, status )

Parámetros

pszName
[in] Puntero al nombre de columna. Debe ser una cadena Unicode. Para ello, coloque una "L" delante del nombre, por ejemplo: L"MyColumn".

wType
[in] Tipo de datos.

nLength
[in] Tamaño de los datos en bytes.

nPrecision
[in] Precisión máxima que se va a usar al obtener datos y wType es DBTYPE_NUMERIC. De lo contrario, se omite este parámetro.

nScale
[in] Escala que se va a usar al obtener datos y wType es DBTYPE_NUMERIC o DBTYPE_DECIMAL.

data
[in] Miembro de datos correspondiente en el registro de usuario.

length
[in] Variable que se va a enlazar a la longitud de la columna.

status
[in] Variable que se va a enlazar al estado de la columna.

Comentarios

Consulte COLUMN_NAME para obtener información sobre dónde se usan las macros COLUMN_NAME_*.

COLUMN_NAME_LENGTH

Representa un enlace en el conjunto de filas a la columna específica del conjunto de filas. Similar a COLUMN_NAME, salvo que esta macro también toma longitud de la columna.

Sintaxis

COLUMN_NAME_LENGTH(pszName, data, length)

Parámetros

pszName
[in] Puntero al nombre de columna. Debe ser una cadena Unicode. Para ello, coloque una "L" delante del nombre, por ejemplo: L"MyColumn".

data
[in] Miembro de datos correspondiente en el registro de usuario.

length
[in] Variable que se va a enlazar a la longitud de la columna.

Comentarios

Consulte COLUMN_NAME para obtener información sobre dónde se usan las macros COLUMN_NAME_*.

COLUMN_NAME_LENGTH_STATUS

Representa un enlace en el conjunto de filas a la columna específica del conjunto de filas. Similar a COLUMN_NAME, salvo que esta macro también toma la longitud y el estado de la columna.

Sintaxis

COLUMN_NAME_LENGTH_STATUS(pszName, data, length, status )

Parámetros

pszName
[in] Puntero al nombre de columna. Debe ser una cadena Unicode. Para ello, coloque una "L" delante del nombre, por ejemplo: L"MyColumn".

data
[in] Miembro de datos correspondiente en el registro de usuario.

length
[in] Variable que se va a enlazar a la longitud de la columna.

status
[in] Variable que se va a enlazar al estado de la columna.

Comentarios

Consulte COLUMN_NAME para obtener información sobre dónde se usan las macros COLUMN_NAME_*.

COLUMN_NAME_PS

Representa un enlace en el conjunto de filas a la columna específica del conjunto de filas. Similar a COLUMN_NAME, salvo que esta macro también toma la precisión y la escala.

Sintaxis

COLUMN_NAME_PS(pszName, nPrecision, nScale, data )

Parámetros

pszName
[in] Puntero al nombre de columna. Debe ser una cadena Unicode. Para ello, coloque una "L" delante del nombre, por ejemplo: L"MyColumn".

nPrecision
[in] Precisión máxima de la columna que desea enlazar.

nScale
[in] Escala de la columna que desea enlazar.

data
[in] Miembro de datos correspondiente en el registro de usuario.

Comentarios

Consulte COLUMN_NAME para obtener información sobre dónde se usan las macros COLUMN_NAME_*.

COLUMN_NAME_PS_LENGTH

Representa un enlace en el conjunto de filas a la columna específica del conjunto de filas. Similar a COLUMN_NAME, salvo que esta macro también toma la precisión, la escala y la longitud de la columna.

Sintaxis

COLUMN_NAME_PS_LENGTH(pszName, nPrecision, nScale, data, length )

Parámetros

pszName
[in] Puntero al nombre de columna. Debe ser una cadena Unicode. Para ello, coloque una "L" delante del nombre, por ejemplo: L"MyColumn".

nPrecision
[in] Precisión máxima de la columna que desea enlazar.

nScale
[in] Escala de la columna que desea enlazar.

data
[in] Miembro de datos correspondiente en el registro de usuario.

length
[in] Variable que se va a enlazar a la longitud de la columna.

Comentarios

Consulte COLUMN_NAME para obtener información sobre dónde se usan las macros COLUMN_NAME_*.

COLUMN_NAME_PS_LENGTH_STATUS

Representa un enlace en el conjunto de filas a la columna específica del conjunto de filas. Similar a COLUMN_NAME, salvo que esta macro también toma la precisión, la escala, la longitud de la columna y el estado de la columna.

Sintaxis

COLUMN_NAME_PS_LENGTH_STATUS(pszName, nPrecision, nScale, data, length, status )

Parámetros

pszName
[in] Puntero al nombre de columna. Debe ser una cadena Unicode. Para ello, coloque una "L" delante del nombre, por ejemplo: L"MyColumn".

nPrecision
[in] Precisión máxima de la columna que desea enlazar.

nScale
[in] Escala de la columna que desea enlazar.

data
[in] Miembro de datos correspondiente en el registro de usuario.

length
[in] Variable que se va a enlazar a la longitud de la columna.

status
[in] Variable que se va a enlazar al estado de la columna.

Comentarios

Consulte COLUMN_NAME para obtener información sobre dónde se usan las macros COLUMN_NAME_*.

COLUMN_NAME_PS_STATUS

Representa un enlace en el conjunto de filas a la columna específica del conjunto de filas. Similar a COLUMN_NAME, salvo que esta macro también toma la precisión, la escala y el estado de la columna.

Sintaxis

COLUMN_NAME_PS_STATUS(pszName, nPrecision, nScale, data, status )

Parámetros

pszName
[in] Puntero al nombre de columna. Debe ser una cadena Unicode. Para ello, coloque una "L" delante del nombre, por ejemplo: L"MyColumn".

nPrecision
[in] Precisión máxima de la columna que desea enlazar.

nScale
[in] Escala de la columna que desea enlazar.

data
[in] Miembro de datos correspondiente en el registro de usuario.

status
[in] Variable que se va a enlazar al estado de la columna.

Comentarios

Consulte COLUMN_NAME para obtener información sobre dónde se usan las macros COLUMN_NAME_*.

COLUMN_NAME_STATUS

Representa un enlace en el conjunto de filas a la columna específica del conjunto de filas. Similar a COLUMN_NAME, salvo que esta macro también toma el estado de la columna.

Sintaxis

COLUMN_NAME_STATUS(pszName, data, status )

Parámetros

pszName
[in] Puntero al nombre de columna. Debe ser una cadena Unicode. Para ello, coloque una "L" delante del nombre, por ejemplo: L"MyColumn".

data
[in] Miembro de datos correspondiente en el registro de usuario.

status
[in] Variable que se va a enlazar al estado de la columna.

Comentarios

Consulte COLUMN_NAME para obtener información sobre dónde se usan las macros COLUMN_NAME_*.

COLUMN_NAME_TYPE

Representa un enlace en el conjunto de filas a la columna específica del conjunto de filas. Similar a COLUMN_NAME, salvo que esta macro también toma el tipo de datos.

Sintaxis

COLUMN_NAME_TYPE(pszName, wType, data)

Parámetros

pszName
[in] Puntero al nombre de columna. Debe ser una cadena Unicode. Para ello, coloque una "L" delante del nombre, por ejemplo: L"MyColumn".

wType
[in] Tipo de datos.

data
[in] Miembro de datos correspondiente en el registro de usuario.

Comentarios

Consulte COLUMN_NAME para obtener información sobre dónde se usan las macros COLUMN_NAME_*.

COLUMN_NAME_TYPE_PS

Representa un enlace en el conjunto de filas a la columna específica del conjunto de filas. Similar a COLUMN_NAME, salvo que esta macro también toma el tipo de datos, la precisión y la escala.

Sintaxis

COLUMN_NAME_TYPE_PS(pszName, wType, nPrecision, nScale, data)

Parámetros

pszName
[in] Puntero al nombre de columna. Debe ser una cadena Unicode. Para ello, coloque una "L" delante del nombre, por ejemplo: L"MyColumn".

wType
[in] Tipo de datos.

nPrecision
[in] Precisión máxima que se va a usar al obtener datos y wType es DBTYPE_NUMERIC. De lo contrario, se omite este parámetro.

nScale
[in] Escala que se va a usar al obtener datos y wType es DBTYPE_NUMERIC o DBTYPE_DECIMAL.

data
[in] Miembro de datos correspondiente en el registro de usuario.

Comentarios

Consulte COLUMN_NAME para obtener información sobre dónde se usan las macros COLUMN_NAME_*.

COLUMN_NAME_TYPE_SIZE

Representa un enlace en el conjunto de filas a la columna específica del conjunto de filas. Similar a COLUMN_NAME, salvo que esta macro también toma el tipo de datos y el tamaño.

Sintaxis

COLUMN_NAME_TYPE_SIZE(pszName, wType, nLength, data)

Parámetros

pszName
[in] Puntero al nombre de columna. Debe ser una cadena Unicode. Para ello, coloque una "L" delante del nombre, por ejemplo: L"MyColumn".

wType
[in] Tipo de datos.

nLength
[in] Tamaño de los datos en bytes.

data
[in] Miembro de datos correspondiente en el registro de usuario.

Comentarios

Consulte COLUMN_NAME para obtener información sobre dónde se usan las macros COLUMN_NAME_*.

COLUMN_NAME_TYPE_STATUS

Representa un enlace en el conjunto de filas a la columna específica del conjunto de filas. Similar a COLUMN_NAME, salvo que esta macro también toma el tipo de datos y el estado de la columna.

Sintaxis

COLUMN_NAME_TYPE_STATUS(pszName, wType, status, data)

Parámetros

pszName
[in] Puntero al nombre de columna. Debe ser una cadena Unicode. Para ello, coloque una "L" delante del nombre, por ejemplo: L"MyColumn".

wType
[in] Tipo de datos.

status
[in] Variable que se va a enlazar al estado de la columna.

data
[in] Miembro de datos correspondiente en el registro de usuario.

Comentarios

Consulte COLUMN_NAME para obtener información sobre dónde se usan las macros COLUMN_NAME_*.

END_COLUMN_MAP

Marca el final de las entradas de asignación de la columna.

Sintaxis

END_COLUMN_MAP()

Comentarios

Se usa con un único descriptor de acceso en un conjunto de filas. La macro BEGIN_COLUMN_MAP se completa con la macro END_COLUMN_MAP.

Ejemplo

Consulte BEGIN_COLUMN_MAP.

DEFINE_COMMAND

Especifica el comando que se usará para crear el conjunto de filas al usar la clase CCommand. Solo acepta tipos de cadena que coincidan con el tipo de aplicación especificado (ANSI o Unicode).

Nota:

Se recomienda que utilice DEFINE_COMMAND_EX en lugar de DEFINE_COMMAND.

Sintaxis

DEFINE_COMMAND(x, szCommand)

Parámetros

x
[in] Nombre de la clase de registro de usuario (comando).

szCommand
[in] Cadena de comando que se usará para crear el conjunto de filas al usar CCommand.

Comentarios

La cadena de comando que especifique se usará como valor predeterminado si no especifica el texto del comando en el método CCommand::Open.

Esta macro acepta cadenas ANSI si compila la aplicación como ANSI, o cadenas Unicode si compila la aplicación como Unicode. Se recomienda usar DEFINE_COMMAND_EX en lugar de DEFINE_COMMAND, ya que el primero acepta cadenas Unicode, independientemente del tipo de aplicación ANSI o Unicode.

Ejemplo

Consulte BOOKMARK_ENTRY.

DEFINE_COMMAND_EX

Especifica el comando que se usará para crear el conjunto de filas al usar la clase CCommand. Admite aplicaciones Unicode y ANSI.

Sintaxis

DEFINE_COMMAND_EX(x, wszCommand)

Parámetros

x
[in] Nombre de la clase de registro de usuario (comando).

wszCommand
[in] Cadena de comando que se usará para crear el conjunto de filas al usar CCommand.

Comentarios

La cadena de comando que especifique se usará como valor predeterminado si no especifica el texto del comando en el método CCommand::Open.

Esta macro acepta cadenas Unicode, independientemente del tipo de aplicación. Esta macro es preferible a DEFINE_COMMAND porque es compatible con Unicode, así como con aplicaciones ANSI.

Ejemplo

Consulte BOOKMARK_ENTRY.

BEGIN_PARAM_MAP

Marca el principio de las entradas de asignación de parámetros.

Sintaxis

BEGIN_PARAM_MAP(x)

Parámetros

x
[in] Nombre de la clase de registro de usuario.

Comentarios

Los comandos usan parámetros.

Ejemplo

Vea el ejemplo de la macro BEGIN_COLUMN_MAP.

END_PARAM_MAP

Marca el final de las entradas de asignación de parámetros.

Sintaxis

END_PARAM_MAP()

Ejemplo

Vea el ejemplo de la macro BEGIN_PARAM_MAP.

SET_PARAM_TYPE

Especifica las macros COLUMN_ENTRY que siguen la entrada, la salida o la entrada y salida de macro de SET_PARAM_TYPE.

Sintaxis

SET_PARAM_TYPE(type)

Parámetros

type
[in] El tipo del conjunto para el parámetro.

Comentarios

Los proveedores solo admiten los tipos de entrada y salida de parámetros admitidos por el origen de datos subyacente. El tipo es una combinación de uno o más valores DBPARAMIO (vea Estructuras DBBINDING en la Referencia del programador de OLE DB):

  • DBPARAMIO_NOTPARAM El descriptor de acceso no tiene ningún parámetro. Normalmente, establece eParamIO en este valor en los descriptores de acceso de la fila para recordar al usuario que los parámetros se omiten.

  • DBPARAMIO_INPUT Parámetro de entrada.

  • DBPARAMIO_OUTPUT Parámetro de salida.

  • DBPARAMIO_INPUT | DBPARAMIO_OUTPUT El parámetro es un parámetro de entrada y de salida.

Ejemplo

class CArtistsProperty
{
public:
   short m_nReturn;
   short m_nAge;
   TCHAR m_szFirstName[21];
   TCHAR m_szLastName[31];

BEGIN_PARAM_MAP(CArtistsProperty)
   SET_PARAM_TYPE(DBPARAMIO_OUTPUT)
   COLUMN_ENTRY(1, m_nReturn)
   SET_PARAM_TYPE(DBPARAMIO_INPUT)
   COLUMN_ENTRY(2, m_nAge)
END_PARAM_MAP()

BEGIN_COLUMN_MAP(CArtistsProperty)
   COLUMN_ENTRY(1, m_szFirstName)
   COLUMN_ENTRY(2, m_szLastName)
END_COLUMN_MAP()

   HRESULT OpenDataSource()
   {
      CDataSource _db;
      _db.Open();
      return m_session.Open(_db);
   }

   void CloseDataSource()
   {
      m_session.Close();
   }

   CSession m_session;

   DEFINE_COMMAND_EX(CArtistsProperty, L" \
      { ? = SELECT Age FROM Artists WHERE Age < ? }")
};

Requisitos

Encabezado: atldbcli.h

Consulte también

Macros y funciones globales para las plantillas de consumidor OLE DB
Plantillas de consumidor OLE DB
Referencia de plantillas de consumidor OLE DB