Leer en inglés

Compartir a través de


Estructura DBCOMMANDTREE (cmdtree.h)

Nota

El servicio de indexación ya no se admite a partir de Windows XP y no está disponible para su uso a partir de Windows 8. En su lugar, use La búsqueda del lado cliente de Windows Search y Microsoft Search Server Express para la búsqueda del lado servidor.

La estructura DBCOMMANDTREE es la estructura de datos principal que se usa para representar cualquier nodo de un árbol de comandos OLE DB, como se describe en la sección Operadores de manipulación de datos y Operadores de definición de datos de esta referencia. Esta estructura se usa para cada nodo de lenguaje de manipulación de datos (DML) o lenguaje de definición de datos (DDL) en un árbol de comandos OLE DB.

Sintaxis

typedef struct tagDBCOMMANDTREE {
  DBCOMMANDOP             op;
  WORD                    wKind;
  struct tagDBCOMMANDTREE *pctFirstChild;
  struct tagDBCOMMANDTREE *pctNextSibling;
  union {
    __int64            llValue;
    unsigned __int64   ullValue;
    BOOL               fValue;
    unsigned char      uchValue;
    signed char        schValue;
    unsigned short     usValue;
    short              sValue;
    LPOLESTR           pwszValue;
    LONG               lValue;
    ULONG              ulValue;
    float              flValue;
    double             dblValue;
    CY                 cyValue;
    DATE               dateValue;
    DBDATE             dbdateValue;
    DBTIME             dbtimeValue;
    SCODE              scodeValue;
    BSTR               *pbstrValue;
    ICommand           *pCommand;
    IDispatch          *pDispatch;
    IMoniker           *pMoniker;
    IRowset            *pRowset;
    IUnknown           *pUnknown;
    DBBYGUID           *pdbbygdValue;
    DBCOLUMNDESC       *pcoldescValue;
    DBID               *pdbidValue;
    DBLIKE             *pdblikeValue;
    DBCONTENT          *pdbcntntValue;
    DBCONTENTSCOPE     *pdbcntntscpValue;
    DBCONTENTTABLE     *pdbcntnttblValue;
    DBCONTENTVECTOR    *pdbcntntvcValue;
    DBCONTENTPROXIMITY *pdbcntntproxValue;
    DBGROUPINFO        *pdbgrpinfValue;
    DBPARAMETER        *pdbparamValue;
    DBPROPSET          *pdbpropValue;
    DBSETFUNC          *pdbstfncValue;
    DBSORTINFO         *pdbsrtinfValue;
    DBTEXT             *pdbtxtValue;
    DBVECTOR           *pdbvectorValue;
    SAFEARRAY          *parrayValue;
    VARIANT            *pvarValue;
    GUID               *pGuid;
    BYTE               *pbValue;
    char               *pzValue;
    DB_NUMERIC         *pdbnValue;
    DBTIMESTAMP        *pdbtsValue;
    void               *pvValue;
    DBPROBABILISTIC    *pdbprobValue;
    DBRELEVANTDOCUMENT *pdbreldocValue;
  } value;
  HRESULT                 hrError;
} DBCOMMANDTREE;

Miembros

op

Identificador de operador (2 bytes)

Valor de tipo DBCOMMANDOP de la enumeración DBCOMMANDOPENUM . Especifica un operador de los operadores de manipulación de datos o los operadores de definición de datos que definen la operación que se realizará en el campo asociado.

wKind

Discriminador para la unión siguiente (2 bytes)

Valor de tipo DBVALUEKIND del tipo enumerado DBVALUEKINDENUM . Define el tipo de datos del miembro de unión asociado para que el procesador de comandos sepa cómo interpretarlo.

pctFirstChild

Puntero al primer elemento secundario (4 bytes)

Puntero a la estructura DBCOMMANDTREE que representa el primer elemento secundario de este nodo del árbol de comandos.

pctNextSibling

Puntero al mismo nivel (4 bytes)

Puntero a la estructura DBCOMMANDTREE que representa el siguiente elemento secundario de este nodo del árbol de comandos.

value

Union representa directamente los campos que caben en 8 bytes. Los comentarios enumeran DBVALUEKIND y DBTYPE correspondientes a cada campo.

Unión que contendrá el valor de cada tipo de datos admitido por este proveedor OLE DB. Para cualquier tipo de datos de miembro de unión que contenga 8 bytes o menos, el propio valor se almacena aquí. De lo contrario, llvalue es un miembro pwszValue , un puntero a los datos.

Un miembro pwszValue es una cadena; su interpretación se deja al proveedor. En otras palabras, el consumidor debe comprender el método de resolución de nombres del proveedor. En el caso de los componentes de comando "pasados" a otro proveedor, se deja al proveedor receptor para interpretar la cadena.

El miembro pMoniker se usa para objetos vinculados sin resolver, en determinadas tablas y funciones.

El miembro pRowset se usa para hacer referencia a un conjunto de filas abierto actualmente como entrada para un comando. La mayoría de los proveedores producirán un error si se invoca un método IPersist mientras el árbol de comandos hace referencia a un conjunto de filas abierto.

El miembro pCommand hace referencia a otro objeto de comando como entrada para un comando. La mayoría de los proveedores producirán un error si se invoca un método IPersist mientras el árbol de comandos hace referencia a un objeto de comando que no admite monikers.

value.llValue

DBVALUEKIND_I8 (DBTYPE_I8)

value.ullValue

DBVALUEKIND_UI8 (DBTYPE_UI8)

value.fValue

DBVALUEKIND_BOOL (DBTYPE_BOOL)

value.uchValue

DBVALUEKIND_UI1 (DBTYPE_UI1)

value.schValue

DBVALUEKIND_I1 (DBTYPE_I1)

value.usValue

DBVALUEKIND_UI2 (DBTYPE_UI2)

value.sValue

DBVALUEKIND_I2 (DBTYPE_I2)

value.pwszValue

DBVALUEKIND_WSTR (DBTYPE_WSTR)

value.lValue

DBVALUEKIND_I4 (DBTYPE_I4)

value.ulValue

DBVALUEKIND_UI4 (DBTYPE_UI4)

value.flValue

DBVALUEKIND_R4 (DBTYPE_R4)

value.dblValue

DBVALUEKIND_R8 (DBTYPE_R8)

value.cyValue

DBVALUEKIND_CY (DBTYPE_CY)

value.dateValue

DBVALUEKIND_DATE (DBTYPE_DATE)

value.dbdateValue

DBVALUEKIND_DBDATE (DBTYPE_DBDATE)

value.dbtimeValue

DBVALUEKIND_DBTIME (DBTYPE_DBTIME)

value.scodeValue

DBVALUEKIND_ERROR (DBTYPE_ERROR)

value.pbstrValue

DBVALUEKIND_BSTR (DBTYPE_BSTR)

value.pCommand

DBVALUEKIND_COMMAND (DBTYPE_IUNKNOWN)

value.pDispatch

DBVALUEKIND_IDISPATCH (DBTYPE_IDISPATCH)

value.pMoniker

DBVALUEKIND_MONIKER (DBTYPE_MONIKER)

value.pRowset

DBVALUEKIND_ROWSET (DBTYPE_ROWSET)

value.pUnknown

DBVALUEKIND_IUNKNOWN (DBTYPE_IUNKNOWN)

value.pdbbygdValue

DBVALUEKIND_BYGUID

value.pcoldescValue

DBVALUEKIND_COLDESC

value.pdbidValue

DBVALUEKIND_ID

value.pdblikeValue

DBVALUEKIND_LIKE

value.pdbcntntValue

DBVALUEKIND_CONTENT

value.pdbcntntscpValue

DBVALUEKIND_CONTENTSCOPE

value.pdbcntnttblValue

DBVALUEKIND_CONTENTTABLE

value.pdbcntntvcValue

DBVALUEKIND_CONTENTVECTOR

value.pdbcntntproxValue

DBVALUEKIND_CONTENTPROXIMITY

value.pdbgrpinfValue

DBVALUEKIND_GROUPINFO

value.pdbparamValue

DBVALUEKIND_PARAMETER

value.pdbpropValue

DBVALUEKIND_PROPERTY

value.pdbstfncValue

DBVALUEKIND_SETFUNC

value.pdbsrtinfValue

DBVALUEKIND_SORTINFO

value.pdbtxtValue

DBVALUEKIND_TEXT

value.pdbvectorValue

DBVALUEKIND_VECTOR | *

value.parrayValue

DBVALUEKIND_ARRAY | *

value.pvarValue

DBVALUEKIND_VARIANT (DBTYPE_VARIANT)

value.pGuid

DBVALUEKIND_GUID (DBTYPE_GUID)

value.pbValue

DBVALUEKIND_BYTES (DBTYPE_BYTES)

value.pzValue

DBVALUEKIND_STR (DBTYPE_STR)

value.pdbnValue

DBVALUEKIND_NUMERIC (DBTYPE_NUMERIC)

value.pdbtsValue

DBVALUEKIND_DBTIMESTAMP (DBTYPE_DBTIMESTAMP)

value.pvValue

un DBVALUEKIND_BYREF genérico

value.pdbprobValue

DBVALUEKIND_PROBABILISTIC

value.pdbreldocValue

DBVALUEKIND_RELEVANTDOCUMENT

hrError

Indicador de error, detalles en Información de error extendida (4 bytes)

Comentarios

Muchas operaciones crean un entorno de enlace. Por ejemplo, una operación de DBOP_select tiene dos entradas: una tabla y un predicado booleano. (Para obtener más información sobre esta operación, vea Operadores con dos variantes para tablas ordenadas y no ordenadas). En virtud de la operación "select", la tabla se convierte en el entorno de enlace del predicado. Esto significa que el predicado puede hacer referencia libremente a los nombres de columna definidos en la tabla. Tenga en cuenta que no todos los enlaces deben proceder de la operación de tabla más cercana. Por ejemplo, puede haber varias operaciones de tabla dentro de una expresión "exist" y cualquier predicado puede hacer referencia a una columna definida fuera de la expresión "exist". (En SQL, esto se denomina "subconsulta correlacionada").

El tamaño típico de una estructura DBCOMMANDTREE para un nodo es de 24 bytes. Sin embargo, los operadores pueden almacenar información específica en el campo de valor del nodo. Para facilitar la programación, el campo de unión incluye ramas que representan algunos tipos comunes que pueden caber en 8 bytes. Los tipos de longitud variable se hacen referencia a través de un puntero a la estructura correspondiente (como DBTEXT). El discriminador de la unión es de tipo WORD en lugar de DBVALUEKIND para que sea posible almacenar valores de nodo como DBVALUEKIND_VECTOR | DBVALUEKIND_GUID, DBVALUEKIND_BYREF | DBVALUEKIND_UI4 o DBVALUEKIND_SAFEARRAY | DBVALUEKIND_I4.

Requisitos

Requisito Value
Cliente mínimo compatible Windows 2000 Professional [solo aplicaciones de escritorio]
Servidor mínimo compatible Windows 2000 Server [solo aplicaciones de escritorio]
Encabezado cmdtree.h