Имя: Пароль:
1C
1C 7.7
v7: Не выполняется команда ADODB
0 1Сергей
 
28.07.15
07:46
Функция УстановитьСоединиение()
    
    СоединениеУстановлено = 0;
    Попытка
        
        ПодключениеАДО = CreateObject("ADODB.Connection");
        ПодключениеАДО.ConnectionTimeout = 3000;
        ПодключениеАДО.CommandTimeOut = 3000;
          ПодключениеАДО.Open("Provider=sqloledb;
                    |Data Source="+ПараметрыПодключения.Получить("ServerName")+";
                    |Initial Catalog="+ПараметрыПодключения.Получить("DBName")+";
                    |User Id="+ПараметрыПодключения.Получить("User")+";
                    |Password="+ПараметрыПодключения.Получить("Password")+";
                    |Connection Timeout = 3000");
        
    Исключение
        Возврат 0;
    КонецПопытки;
    
    СоединениеУстановлено = 1;
    Возврат 1;
    
КонецФункции

Процедура Сформировать()
    
    Если УстановитьСоединиение()<>1 Тогда
        Возврат;
    КонецЕсли;
    
    КомандаАДО = СоздатьОбъект("ADODB.Command");
    КомандаАДО.ActiveConnection = ПодключениеАДО;

    ПодключениеАДО.BeginTrans();

        КомандаАДО.CommandText = ТекстЗапроса;
        КомандаАДО.Execute();

    ПодключениеАДО.CommitTrans();


ОШИБКА:

КомандаАДО.Execute();
{D:\БАЗЫ77\SERGEY_ВЫГРУЗКАДАННЫХ\ВЫГРУЗКАТОВАРАSQLWMS.ERT(306)}: Microsoft OLE DB Provider for SQL Server: Incorrect syntax near 'GO'.

Хотя, в Management Studio код выполняется на ура
1 1Сергей
 
28.07.15
07:47
Текст команды:


USE [Bufer];
GO

DECLARE @RC int
DECLARE @PackKey nvarchar(50)
DECLARE @PackDescer nvarchar(50)
DECLARE @PackUom1 nvarchar(10)
DECLARE @InnerPack int
DECLARE @HeighUom1 decimal(9,3)
DECLARE @WidthUom1 decimal(9,3)
DECLARE @LengthUom1 decimal(9,3)
DECLARE @WeightPerPiece decimal(9,3)
DECLARE @PackUom2 nvarchar(10)
DECLARE @CaseCnt int
DECLARE @HeighUom2 decimal(9,3)
DECLARE @WidthUom2 decimal(9,3)
DECLARE @LengthUom2 decimal(9,3)
DECLARE @WeightBox decimal(9,3)
DECLARE @PackUom3 nvarchar(10)
DECLARE @Pallet int
DECLARE @HeighUom3 decimal(9,3)
DECLARE @WidthUom3 decimal(9,3)
DECLARE @LengthUom3 decimal(9,3)
DECLARE @WeightPallet decimal(9,3)

-- TODO: задайте здесь значения параметров.
SET @PackKey = '040007PS0008DE0000000000000002000UV4000XHK'
SET @PackUom1 = 'Шт'
SET @InnerPack = 1
SET @WeightPerPiece = 1.085
SET @PackUom2 = ''
SET @CaseCnt = 0
SET @WeightBox = 0.000
SET @PackUom3 = 'Ко'
SET @Pallet = 4
SET @WeightPallet = 4.340

EXECUTE @RC = [dbo].[ExpItemPackToWMS_ADD]
   @PackKey
  ,@PackDescer
  ,@PackUom1
  ,@InnerPack
  ,@HeighUom1
  ,@WidthUom1
  ,@LengthUom1
  ,@WeightPerPiece
  ,@PackUom2
  ,@CaseCnt
  ,@HeighUom2
  ,@WidthUom2
  ,@LengthUom2
  ,@WeightBox
  ,@PackUom3
  ,@Pallet
  ,@HeighUom3
  ,@WidthUom3
  ,@LengthUom3
  ,@WeightPallet;
GO
2 dk
 
28.07.15
07:52
на какой именно команде матерится?
замомменть екзекут
3 1Сергей
 
28.07.15
07:53
USE [Bufer]
GO

КомандаАДО.Execute();
{D:\БАЗЫ77\SERGEY_ВЫГРУЗКАДАННЫХ\ВЫГРУЗКАТОВАРАSQLWMS.ERT(306)}: Microsoft OLE DB Provider for SQL Server: Incorrect syntax near 'GO'.
4 1Сергей
 
28.07.15
07:54
убрать все GO?
5 dk
 
28.07.15
07:54
гоу вообще убрать если?
6 1Сергей
 
28.07.15
07:55
Без го взлетело
7 dk
 
28.07.15
07:58
юз буфер тоже можешь убрать
у тебя уже указана база в Initial Catalog
надумаешь перенести базу, а в коде забита конкретная - не айс
8 1Сергей
 
28.07.15
08:00
(7) это как раз фигня. База должна быть именно с таким именем
9 1Сергей
 
28.07.15
08:09
ща тебе наговорят, типа "с такой полоской, а запросов не знаешь. срамота" :)
10 1Сергей
 
28.07.15
08:10
(9) сторно, не туды :)
11 ДенисЧ
 
28.07.15
08:35
адо не любит запросов с go.
разделяй на куски.
12 spock
 
28.07.15
08:41
(1) в t-sql нет такой инструкции как GO. Это инструкция разделения запросов, которая настраивается в SQL Server Management Studio: Сервис - Параметры - Выполнение запроса - Разделитель пакетов.

Замени на ";" и будет как в 1С :))
13 1Сергей
 
28.07.15
08:45
а как выполнять Engine-запросы из 1с?
14 1Сергей
 
28.07.15
08:48
упростил запрос (1):

[Bufer].[dbo].[ExpItemPackToWMS_ADD]
   '040007PS0008DE0000000000000002000UV4000XHK'
  ,NULL
  ,'Шт'
  ,1
  ,NULL
  ,NULL
  ,NULL
  ,1.085
  ,''
  ,0
  ,NULL
  ,NULL
  ,NULL
  ,0.000
  ,'Ко'
  ,4
  ,NULL
  ,NULL
  ,NULL
  ,4.340
15 ДенисЧ
 
28.07.15
08:50
(13) А что такое "Engine-запросы"?
16 1Сергей
 
28.07.15
08:53
(15) http://savepic.su/5925008.png

те, которые понимают GO
17 ДенисЧ
 
28.07.15
08:54
Ещё раз.
Не надо использовать go в ado-запросах.
Сделай 2 запроса.
18 1Сергей
 
28.07.15
08:57
(17) Да, я уже на один переделал :)