Это - один путь (SQL2000)
SELECT * FROM
(
SELECT TOP (@pageSize) * FROM
(
SELECT TOP (@pageNumber * @pageSize) *
FROM tableName
ORDER BY columnName ASC
) AS t1
ORDER BY columnName DESC
) AS t2
ORDER BY columnName ASC
, и это иначе (SQL 2005)
;WITH results AS (
SELECT
rowNo = ROW_NUMBER() OVER( ORDER BY columnName ASC )
, *
FROM tableName
)
SELECT *
FROM results
WHERE rowNo between (@pageNumber-1)*@pageSize+1 and @pageNumber*@pageSize
VBScript и другие клиенты с поздним связыванием используют IDispatch для вызова методов объектов. Таким образом, эти языки не имеют доступа к информации о типах в библиотеке типов - они просто создают объект из GUID, получают обратно указатель IDispatch и начинают вызывать методы по имени.
Я не уверен в COM interop часть вопроса, но даже если бы перечисления отображались в OleView, вы не смогли бы использовать их напрямую.
Однако, если вы можете опубликовать перечисления в typelib, я написал инструмент много лет назад который может генерировать файл сценария (vbs или js), содержащий все перечисления из библиотеки типов в виде констант.
Моя (пока единственная) сборка .NET, которую я сделал видимой для COM, также имела тип перечисления, который отлично проявлялся в OleView. Я сделал всю библиотеку видимой для COM, поэтому
[ComVisible(true)]
не понадобился. Является ли ваш тип перечисления общедоступным?
Произошло одно: различные перечисления были «снабжены префиксом» с «именем типа перечисления» _:
public enum DataType
{
INT32,
FLOAT64,
INT8
}
превратились в:
typedef [...]
enum {
DataType_INT32 = 0,
DataType_FLOAT64 = 1,
DataType_INT8 = 2
} DataType;
в библиотеке типов.