Имя: Пароль:
1C
1С v8
ADODB.Connection запрос не выполняет
0 Beduin
 
22.11.11
19:15
Через SQL Server Management Studio все ок. А в 8.1 не хочет.
   Cn= Новый COMОбъект("ADODB.Connection");;
   Cn.Open(connect);
   Cmd =Новый COMОбъект("ADODB.Command");
   Cmd.ActiveConnection=Cn;
   Cmd.CommandTimeout = 120000;
   //Cmd.CommandType = "adCmdText";
   Cmd.CommandText= "SELECT t1.[SaleManager],t1.[DT],t2.[tabnum] FROM
   |(SELECT [SaleManager],MAX([DT]) as dt  FROM [CPCR_1C_OBMEN].[dbo].[CrtContr_log] group by [SaleManager]) as t1  
   |LEFT JOIN (SELECT [SaleManager],[DT],[tabnum] from [CPCR_1C_OBMEN].[dbo].[CrtContr_log] group by [SaleManager],[DT],[tabnum] ) as t2 on t1.[SaleManager] = t2.[SaleManager] and t1.[DT] = t2.[DT]
   |order by t1.[SaleManager]";
Может вложенные запросы через этот майкрософтовский объект использовать нельзя?
1 shuhard
 
22.11.11
19:17
(0) не вижу рекордсета
2 Beduin
 
22.11.11
19:18
(1)
   попытка
       recordset=Cmd.Execute();
   Исключение
       Сообщить(Строка(ТекущаяДата())+" Не удалось сделать запрос к SQL - таблице контрагентов. Сверка с wp производится не будет");
   КонецПопытки;
3 Beduin
 
22.11.11
19:20
Причем более простой запрос делает
Cmd.CommandText= "SELECT [SaleManager],[TabNum]  FROM [CPCR_1C_OBMEN].[dbo].[CrtContr_log] group by [SaleManager],[TabNum]";
А тот который вверху вываливается в исключение.
4 НаборДанных
 
22.11.11
19:21
(0)Представления, временные, постоянные таблицы.
5 Beduin
 
22.11.11
19:22
(4) Нельзя использовать?
6 shuhard
 
22.11.11
19:22
(3) надо посмотреть какую ошибку вернул ADODB
7 НаборДанных
 
22.11.11
19:25
(5)Было подобное, решил через временные таблицы.
Решение выплыло исходя из "Вложенные запросы не являются стандартом в SQL следовательно каждый производитель драйвера сам решает поддерживать их или нет. Кстати даже многие сервера баз данных не поддерживают такие запросы."
8 Beduin
 
22.11.11
19:27
(7) Мне через временные нельзя. Там данных много.
9 Beduin
 
22.11.11
19:27
(6) Где можно глянуть?
10 shuhard
 
22.11.11
19:28
(9) ну тебе же исключение вернёт описание ошибки

а по поводу (8) -сделай хранимку на сиквеле
11 НаборДанных
 
22.11.11
19:28
(8)Вариант №1 в (4) (Создать view) и вызывать его чем не устраивает?
12 Beduin
 
22.11.11
19:29
(10) ОписаниеОшибки() смотрел. Там пусто.
13 DmitrO
 
22.11.11
19:41
уже 12 постов.. :)
думаю что пора уже попытку/исключение убрать и увидеть и прочитать ошибку которую возвращает сервер
14 shuhard
 
22.11.11
19:42
(13) =)
15 Beduin
 
22.11.11
19:43
(13) У меня прав нет. на логи сервера
16 shuhard
 
22.11.11
19:47
(15) DmitrO предложил убрать попытка
17 DmitrO
 
22.11.11
19:48
(15)меня просто вводит в ступор твой ответ..
Слушай, вылазь из танка, оператор Попытка и Исключение убери ради бога, а..
18 Beduin
 
22.11.11
19:50
(17) Я запутался. Где посмотреть ошибку просто скажи? Или как.
19 Beduin
 
22.11.11
19:50
(18) Все понял. Туплю.
20 Beduin
 
22.11.11
19:54
(13)
{Форма.Отчет(120)}: Ошибка при вызове метода контекста (Execute): Произошла исключительная ситуация (Microsoft OLE DB Provider for SQL Server): Время ожидания истекло
       recordset=Cmd.Execute();
по причине:
Произошла исключительная ситуация (Microsoft OLE DB Provider for SQL Server): Время ожидания истекло
21 szhukov
 
22.11.11
19:58
(20) Cmd.CommandTimeout=0;
Будет выполнять до упора...
22 Beduin
 
22.11.11
20:03
(21) Спасибо. Помогло. Я думал 120000 секунд достаточно.
23 Axel2009
 
22.11.11
21:23
120000 секунд - полтора суток. записей сколько?
24 vde69
 
22.11.11
21:44
[CPCR_1C_OBMEN] - убери, если используешь имя роли [dbo] то имя базы обычно не нужно
Кaк может человек ожидaть, что его мольбaм о снисхождении ответит тот, кто превыше, когдa сaм он откaзывaет в милосердии тем, кто ниже его? Петр Трубецкой