Книга знаний

1С:Предприятие / v8 / Приемы программирования / OLE, COM

v8: Пример работы с InterBase через OLE DB из 1С v 8.x

В статье описан пример работы с InterBase через OLE DB из 1С v 8.xАвтор статьи: avmlvm | Редакторы:
Последняя редакция №4 от 23.08.06 | История
URL: http://kb.mista.ru/article.php?id=341

Ключевые слова: ADO, COM, OLEDB, ActiveX, выгрузка, загрузка, InterBase


Для работы требует ADO - оно сейчас есть везде, и FreeIBProvider - это IB OLEDB драйвер.

=================================================
Итак... хорошо сначала подумали, потом поставили FreeIBProvider Коваленко, а потом написали в 1С v 8.х такую процедуру:

//  Процедура ЧтениеБДInterBase - производит чтение данных из таблицы InterBase
//
// Параметры:
//    Сервер - Строка с именем сервера на котором находится база InterBase (например: "ServerBD")
//    МестоНахождениеБД - Строка с полным именем базы InterBase (например: "d:\database\myBase.gdb")
//    ПараметрыПодключения - Строка с требуемыми если нужно параметрами подключения (например: "auto_commit=True;ctype=win1251")
//    ИмяПользователя - Имя пользователя имеющего право на работу с InterBase (например: "SYSDBA")
//    ПарольПользователя - пароль доступа к InterBase (например: "password")


Процедура ЧтениеБДInterBase (Сервер, МестоНахождениеБД, ПараметрыПодключения, ИмяПользователя, ПарольПользователя)

      стрПодключения = "data source=" + Сервер + ":" + МестоНахождениеБД + ";" + ПараметрыПодключения + ";user ID=" +
      | ИмяПользователя + ";password=" + ПарольПользователя

      Connection = Новый COMОбъект("ADODB.Connection");
      Connection.Provider = "LCPI.IBProvider";
      Connection.ConnectionString =  стрПодключения;
      
      попытка
          Connection.Open();
      исключение
          Сообщить ("Проблемы с подключением к InterBase" );
          Возврат;
      КонецПопытки;

      RS = Новый COMОбъект("ADODB.Recordset");
    
     //Запрос к базе данных на языке SQL запросов

     попытка
         RS.Open("Select * From name", Connection );
     исключение
         Сообщить ("Проблемы с выполнением запроса к InterBase");
         Возврат;
     КонецПопытки;

     // Пример обработки полученного recordset

     Пока RS.EOF() = 0 Цикл
        Имя = RS.Fields("Name").Value;
        Описание = RS.Fields("Description").Value;
         
    // Обработка других полей
         
        RS.MoveNext();

     КонецЦикла;
    
     // Завершение работы с InterBase 

     RS.Close();
     Connection.Close();

КонецПроцедуры;



Если понравится - "курить букварь" ADO, OLE DB, Connection, Command, Recordset, и т.д....
Потом сделать наконец "все по-человечески" :-)

А вообще при работе с InterBase через OLE DB (как в приведенном примере), можно делать все, что можно делать с базами данных.... Запросы, в том числе параметризованные, процедуры, транзакции, и т.д.
Данные, само собой, можно не только "доставать", но и "записывать". Можно даже работать с несколькими транзакциями в одном коннекте, как здесь:  http://www.ibprovider.com/eng/examples/example_09_02.html

другой на мой взгляд очень полезный материал с примерами доступа к SQL-таблицам базы данных 1С:Предприятие с помощью методов ADO я рекомендую (с поправкой что примеры приведены для 1С v 7.7) почитать тут - http://melan.gazinter.net/ADO&SQL&1C/index.html

Кстати взять FreeIBProvider можно на сайте разработчиков - http://www.ibprovider.com


Удачи

Описание | Рубрикатор | Поиск | ТелепатБот | Захваченные статьи | Установки | Форум
© Станислав Митичкин (Волшебник), 2005-2025 | Mista.ru

Яндекс.Метрика