8.х Чтение из SQL-базы

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем DDRON, 8 окт 2008.

  1. TopicStarter Overlay
    DDRON
    Offline

    DDRON Опытный в 1С

    Регистрация:
    26 авг 2008
    Сообщения:
    55
    Симпатии:
    0
    Баллы:
    26
    Добрый вечер.
    Пытаюсь приконнектиться так:

    Код:
    Соединение = Новый COMОбъект("ADODB.Connection");
    СтрокаСоединения = "Driver={SQL Server};server=***;dataBase=***;uid=***;pwd=***";
    Попытка 
    СтрокаПодключения = СтрокаСоединения;
    Соединение.Open(СТрокаПодключения);
    Исключение
    Сообщить(ОписаниеОшибки());
    Возврат;
    КонецПопытки;
    Сообщить("Успешно");
    
    НаборЗаписей = Новый COMОбъект("ADODB.Recordset");
    ИмяТаблицыБазыДанных = "Categories";
    ВыборкаДанные = НаборЗаписей.Open(ИмяТаблицыБазыДанных, 
    Соединение.ActiveConnection);
    ПолеТаблицы = Новый COMОбъект("ADODB.Field");
    Для Каждого ПолеТаблицы Из ВыборкаДанные Цикл
    Сообщить(ПолеТаблицы.Name + " " + ПолеТаблицы.Value);        
    КонецЦикла;
    НаборЗаписей.Close();    
    
    
    
    
    Надпись "успешно" выводится. А далее выводится следующее сообщение об ошибке:

    Код:
    {Форма.Форма(17)}: Ошибка при получении значения атрибута контекста (ActiveConnection): 
    Произошла исключительная ситуация (ADODB.Connection): Arguments are of the wrong type, are out of acceptable range, 
    or are in conflict with one another. ВыборкаДанные = НаборЗаписей.Open(ИмяТаблицыБазыДанных, Соединение.ActiveConnection);
    по причине:
    Произошла исключительная ситуация (ADODB.Connection): Arguments are of the wrong type, 
    are out of acceptable range, or are in conflict with one another.
    
    
    
    Почему появляется эта ошибка?
    Как будет правильно произвести чтение из таблицы SQL-базы?
  2. TopicStarter Overlay
    DDRON
    Offline

    DDRON Опытный в 1С

    Регистрация:
    26 авг 2008
    Сообщения:
    55
    Симпатии:
    0
    Баллы:
    26
    Никто не знает?
  3. lazy
    Offline

    lazy Модераторы Команда форума Модератор

    Регистрация:
    1 сен 2007
    Сообщения:
    2.127
    Симпатии:
    4
    Баллы:
    29
    Надпись "Успешно" выводится потому, что она за пределами возникающего исключения. Код на самом деле должен быть примерно таким:
    Код:
    Попытка 
    СтрокаПодключения = СтрокаСоединения;
    Соединение.Open(СТрокаПодключения);
    Сообщить("Успешно");
    Исключение
    Сообщить(ОписаниеОшибки());
    Возврат;
    КонецПопытки;
    
    
    Соединение не происходит из за того, что Вы забыли указать какой тип сервера используете
    Код:
    СтрокаСоединения = "Driver={SQL Server};server=***;dataBase=***;uid=***;pwd=***";
    
    
    Видите надпись в фигурных скобочках? Они(скобочки) там отнюдь не спроста ;)
    Пример подключения для 8.1 в прилагаемом файле :)

    Вложения:

  4. TopicStarter Overlay
    DDRON
    Offline

    DDRON Опытный в 1С

    Регистрация:
    26 авг 2008
    Сообщения:
    55
    Симпатии:
    0
    Баллы:
    26
    Да, эту обработку я смотрел ещё до создания данной темы.
    Собственно из неё я и взял эту строку подключения.

    Я всё-таки не очень понимаю что подразумеваеся под словами "тип сервера".

    У меня установлен SQL Server 2005.
    Название сервера и базы я вбиваю такие:
    server=DATACENTER\РОГАИКОПЫТА;
    dataBase=ЗаборInfo;
    "Рогаикоыта" и "забор" - названия вымышленные.

    Что в тип сервера то вбить?
    SQL Server 2005 ?

    Спасибо.
  5. BuHunyx
    Offline

    BuHunyx

    Регистрация:
    15 июл 2008
    Сообщения:
    3
    Симпатии:
    0
    Баллы:
    1
    у мну sql 2003 , строка соединения выглидит так :("Provider=SQLOLEDB;Data Source=" + СокрЛП(Константы.СерверБазы77.Получить()) + ";Persist Security Info=True;User ID=" + СокрЛП(Константы.ЛогинДляПодключенияКБазе77.Получить()) + ";Password=" + СокрЛП(Константы.ПарольДляПодключенияКБазе77.Получить()) + ";Initial Catalog=" + СокрЛП(Константы.ИмяБазы77.Получить()));

Поделиться этой страницей