0

我想知道多值列有多少值。MSDN 说“JET_RETRIEVECOLUMN 中的 itagSequence 可以为 0。如果 itagSequence 为 0,则返回多值列的实例数,而不是任何列数据。” (当我们使用 JetRetrieveColumns 函数时)但是要返回的值的数据类型是什么?

JET_RETRIEVECOLUMN j_rc;
j_rc.columnid = j_cb.columnid; // j_cb is of type JET_COLUMNBASE
j_rc.grbit = NULL;
j_rc.pvData = // pointer to buffer for storing data
j_rc.cbData = // size of data

检查列是否为多值

if (j_cb.grbit & JET_bitColumnMultiValued) { 

检索多值列中的值数量


        j_rc.itagSequence = 0;
        JetRetrieveColumns(sessionID, tbl_cursor, &j_rc, 1);
        ...
}

那么要返回的数据类型是什么?

4

1 回答 1

1

关于 JetRetrieveColumns 的 MSDN:“成功时,列数据和列大小将在 JET_RETRIEVECOLUMN 结构数组中描述的提供的缓冲区中返回。如果将 itagSequence 设置为 0(零)以指示需要多值字段的实例数而不是列数据,然后在 itagSequence 字段本身中返回多值列的实例数。每个 JET_RETRIEVECOLUMN 结构都有一个错误字段,其中包含检索到的列的警告。如果该列的值为 NULL,则错误代码将设置为 JET_wrnColumnNull。” 顺便说一下 itagSequence 的类型是unsigned long。感谢 Paul Ogilvie 指出我的答案:)

于 2019-07-18T16:21:20.697 回答