Есть примерно такой скрипт:
CREATE TABLE #TempTable (
[Recipient] [int] NOT NULL,
[RecipientName] varchar (64) Null,
[Local] [int] Not Null,
[LocalName] varchar (64) Null,
[Sup] [int] NOT NULL,
[SuplName] varchar (64) Null,
[Operation] [smallint] NOT NULL,
[OperationName] varchar (64) Null,
[Product] [int] NOT NULL,
[Article] varchar (64) Null,
[ArtSup] varchar (64) Null,
[ProductName] varchar (64) Null,
[Group1] [int] Null,
[Group1Name] varchar (64) Null,
[AvgOstQty] [money] NULL,
[AvgOstSum1] [money] NULL,
[SaleMove] [money] NULL,
[SaleSum1] [money] NULL,
[SaleProceed1] [money] NULL
)
INSERT #TempTable
EXEC My_Report_AvgOstBySupplRecip
@Recip = '',
@Local = '',
@grp = '',
@Supls = '',
@operation = N'121,120,145',
@Product = '',
@datefrom = '20060701',
@dateto = '20060731'
--*******************************************************************
SELECT
CASE WHEN (GROUPING(RecipientName) = 1) THEN 'ВСЕ Магазины'
ELSE ISNULL(CAST(RecipientName AS varchar), 'UNKNOWN')
END AS RecipientName,
CASE WHEN (GROUPING(SuplName) = 1) THEN 'ВСЕ Поставщики'
ELSE ISNULL(CAST(SuplName AS varchar), 'UNKNOWN')
END AS SuplName,
CASE WHEN (GROUPING(Group1Name) = 1) THEN 'ВСЕ Группы'
ELSE ISNULL(CAST(Group1Name AS varchar), 'UNKNOWN')
END AS Group1Name,
SUM(AvgOstQty) AS AvgOstQty,
SUM(AvgOstSum1) AS AvgOstSum1,
SUM(SaleMove) AS SaleMove,
SUM(SaleSum1) AS SaleSum1,
SUM(SaleProceed1) AS SaleProceed1
FROM #TempTable
GROUP BY RecipientName, SuplName, Group1Name WITH ROLLUP
ORDER BY RecipientName DESC, SuplName DESC, Group1Name DESC
--*******************************************************************
DROP TABLE #TempTable
Пытаюсь его исполнить через ADO (клиент - 1C v8.0, сервер - MS SQL 2005) и получить результат. Примерно так:
Conn = Новый COMОбъект("ADODB.Connection");
Conn.ConnectionString = СтрокаПодключения;
Conn.Open();
Comm = Новый COMОбъект("ADODB.Command");
Comm.CommandTimeout = 0;
Comm.CommandText = ТекстЗапроса;
Comm.ActiveConnection = Conn;
Comm.CommandType = 1;
Rec = Comm.Execute();
Rec.Open();
Сообщить(Rec.State);
Rec = Rec.NextRecordset();
Rec.Open();
Сообщить(Rec.State);
Рекордсет(ы) оказывается закрытым! Хотя очень похоже, что скрипт исполняется - одинэсина белеет, как парус в море, на целую минуту, при этом никаких ошибок (исключений) нет. Как открыть рекордсет и выдрать данные?