Книга знаний

1С:Предприятие / Приемы программирования / Внешние компоненты

Внешняя компонента для работы с базами данных BDE

Внешняя компонента позволяет работать с базами данных по интерфейсу BDE. Приведенный по ссылке архив содержит исходный код (компилятор - Delphi 6) и тестовый пример конфигурации для 1С:Предприятие 7.7.Автор статьи: romix
Последняя редакция №1 от 15.11.06
URL: http://kb.mista.ru/article.php?id=413

Ключевые слова: BDE, Delphi, BLOB, SQL, запрос, внешняя компонента


http://x-romix.narod.ru/vk_bde.rar (277К, скачивать левой кнопкой мыши).


Общие сведения о компоненте

Назначение и установка компоненты



Компонента предназначена для работы с базой данных (InterBase, FireBird, Paradox...) посредством драйвера BDE (Borland Database Engine).

Первый запуск компоненты должен производиться в системе под правами администратора или привилегированного пользователя, которому даны полномочия регистрировать COM-объекты в системном реестре Windows.

Пример подключения для 1С 7.7



Здесь приведен пример подключения компоненты из глобального модуля 1С 7.7

Пример:

перем bde Экспорт;

//*******************************************
Процедура ПриНачалеРаботыСистемы()
    
    ок=1;
    
    //Загружаем компоненту
    Если ЗагрузитьВнешнююКомпоненту("vk_bde.dll")=0 Тогда
        ок=0;
    КонецЕсли;
    
    //Создаем объект внешней компоненты
    Попытка
        bde = СоздатьОбъект("AddIn.vk_bde");
    Исключение
        ок=0;
    КонецПопытки;
    
    //При ошибке выводим сообщение пользователю.
    Если ок=0 Тогда
        Сообщить("Не удается загрузить внешнюю компоненту vk_bde.dll","!");
        Сообщить(" - Проверьте наличие файла в папке информационной базы.","!");
        Сообщить(" - Попытайтесь выполнить первый запуск под правами администратора.","!");
    КонецЕсли;    
    
КонецПроцедуры


Пример использования для 1С 7.7



Данный пример работает с демонстрационной базой IBLocal

Пример:

//*******************************************
Процедура Сформировать()
    
    Попытка
    //Подключение к базе данных    
    bde.Подключиться("IBLocal", "sysdba", "masterkey");
    
    ок=0;
    
    //Выполнение SQL-запроса, который возвращает набор данных (результат запроса)
    bde.ЗапросSQL("SELECT * FROM COUNTRY");
    //Получаем следующую запись из набора данных
    Пока bde.ПолучитьЗапись()=1 Цикл
        //Получаем поля данных
        Сообщить(""+bde.Поле("COUNTRY")+" "+bde.Поле("CURRENCY"));
        Страна=СокрЛП(bde.Поле("COUNTRY"));
        Если Страна="Россия" Тогда
            ок=1;
        КонецЕсли;    
    КонецЦикла;    
    
    Если ок=0 Тогда
    
        //Выполнение SQL-команды, которая не возвращает набора данных
        bde.ВыполнитьSQL("INSERT into COUNTRY (COUNTRY, CURRENCY) values ('Россия','Рубль');");
    
    КонецЕсли;
    
    //Закрываем запрос (соединение с базой данных при этом не закрывается)
    bde.Закрыть();
    
    //Отключаемся от базы данных
    bde.Отключиться();
    
    Исключение
       Сообщить(ОписаниеОшибки(),"!");
       Сообщить(bde.Ошибка,"!");
    КонецПопытки;

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


Свойства

Ошибка



Англоязычный синоним:

ErrorMsg

Синтаксис:

Ошибка

Назначение:

При ошибках компонента генерирует исключение. В данном свойстве содержится текстовое описание ошибки.

Пример:

Попытка
    bde.Подключиться("IBLocal", "sysdba", "masterkey");
Исключение
    Сообщить(ОписаниеОшибки(),"!");
    Сообщить(bde.Ошибка,"!");
КонецПопытки;

Методы

Подключиться()



Англоязычный синоним:

Connect()

Синтаксис:

Подключиться(<База>,<Логин>,<Пароль>)

Назначение:

Выполняет подключение к серверу базы данных посредством драйвера BDE.

Возвращаемое значение:

Не возвращает значение. При ошибке генерирует исключение.

Параметры:

<База> - (Строка) Псевдоним базы данных, как он указан в настройках BDE.

<Логин> - (Строка) Логин (входное имя) пользователя базы данных.

<Пароль> - (Строка) Пароль пользователя базы данных.

Замечание:

Соединение с сервером базы данных сохраняется между SQL-запросами, поэтому устанавливать повторно соединение не нужно..

Пример:
Попытка
    bde.Подключиться("IBLocal", "sysdba", "masterkey");
Исключение
    Сообщить(ОписаниеОшибки(),"!");
    Сообщить(bde.Ошибка,"!");
КонецПопытки;


ВыполнитьSQL()



Англоязычный синоним:

ExecSQL()

Синтаксис:

ВыполнитьSQL(<Команда>)

Назначение:

Выполняет команду языка SQL, которая не возвращает набора записей (например, UPDATE).

Возвращаемое значение:

Не возвращает значение. При ошибке генерирует исключение.

Параметры:

<Команда> - (Строка) Строка SQL-инструкции, которая должна быть выполнена.

Пример:

//Выполнение SQL-команды, которая не возвращает набора данных
bde.ВыполнитьSQL("INSERT into COUNTRY (COUNTRY, CURRENCY) values ('Россия','Рубль');");


ЗапросSQL()



Англоязычный синоним:

QuerySQL()

Синтаксис:

ЗапросSQL(<Запрос>)

Назначение:

Выполняет запрос языка SQL (SELECT), который возвращает набор записей.

Возвращаемое значение:

1 - если в выборке есть хотя бы одна запись.

0 - в выборке нет ни одной записи.

При ошибке генерирует исключение.

Параметры:

<Запрос> - (Строка) Строка SQL-запроса, которая должна быть выполнена.

Пример:

    //Выполнение SQL-запроса, который возвращает набор данных (результат запроса)
    bde.ЗапросSQL("SELECT * FROM COUNTRY");
    //Получаем следующую запись из набора данных
    Пока bde.ПолучитьЗапись()=1 Цикл
        //Получаем поля данных
        Сообщить(""+bde.Поле("COUNTRY")+" "+bde.Поле("CURRENCY"));
    КонецЦикла;


ПолучитьЗапись()



Англоязычный синоним:

GetRecord()

Синтаксис:

ПолучитьЗапись()

Назначение:

Получает запись из набора записей, который возвращает оператор ЗапросSQL(). Т.е. сначала надо выполнить метод ЗапросSQL, а затем извлекать из полученного запроса записи методом ПолучитьЗапись().

Возвращаемое значение:

1 - запись была получена.

0 - запись не была получена (пустой результат запроса или записи кончились).

При ошибке генерирует исключение.

Параметры:

нет

Пример:

    //Получаем следующую запись из набора данных
    Пока bde.ПолучитьЗапись()=1 Цикл
        //...
    КонецЦикла;


Поле()



Англоязычный синоним:

Field()

Синтаксис:

Поле(<Имя>)

Назначение:

Получает поле из записи по его имени. Т.е. сначала надо получить запись методом ПолучитьЗапись(), а потом извлекать из этой записи поля по их имени при помощи метода Поле().

Возвращаемое значение:

Возвращает значение поля. Тип поля (число, строка, дата...) определяется автоматически.

При ошибке генерирует исключение.

Параметры:

<Имя> - (Строка) Название поля базы данных, которое следует получить.

Пример:

    Пока bde.ПолучитьЗапись()=1 Цикл
        //Получаем поля данных
        Сообщить(""+bde.Поле("N")+" "+bde.Поле("F_NAME")+" "+bde.Поле("S_NAME")+" "+bde.Поле("M_NAME")+"     "+bde.Поле("DATE_BRS"));
    КонецЦикла;



Время()



Англоязычный синоним:

Time()

Синтаксис:

Время(<Имя>)

Назначение:

Получает значение времени из поля в формате TimeStamp (Дата+Время).

Замечание:

Данный метод необходим только для 1С версии 7.7. 1С версии 8.0 корректно получает из выборки и дату, и время.

Возвращаемое значение:

Возвращает значение времени в формате 21:30:55.

При ошибке генерирует исключение.

Параметры:

<Имя> - (Строка) Название поля базы данных, из которого следует получить время.

Пример:

        зн=bde.Время(""CHANGE_DATE"");
        Сообщить(зн);


ПолучитьBLOB()



Англоязычный синоним:

GetBLOB()

Синтаксис:

ПолучитьBLOB(<ИмяПоля>,<ИмяФайла>)

Назначение:

Извлекает (читает) значение поля типа BLOB из базы данных в файл.

Возвращаемое значение: нет

При ошибке генерирует исключение.

Параметры:

<ИмяПоля> - (Строка) Название поля базы данных, из которого следует получить значение BLOB.

<ИмяФайла> - (Строка) Имя файла, куда следует сохранить значение.

Пример:

        bde.ПолучитьBLOB("graphic", КаталогИБ()+"img\"+имя+".jpg");


Закрыть()


Англоязычный синоним:

Close()

Синтаксис:

Закрыть()

Назначение:

Закрывает выборку SQL.

Возвращаемое значение:

нет.

Параметры:

нет

Замечание:

Корректное завершение выборки высвобождает ресурсы сервера.

Данный метод не завершает соединение с сервером.

Пример:

    bde.Закрыть();


Отключиться()



Англоязычный синоним:

Disconnect()

Синтаксис:

Отключиться()

Назначение:

Разрывает установленное соединение с сервером базы данных.

Возвращаемое значение:

нет

Замечание:

После разрыва соединения работа с базой данных невозможна до повторного подключения.

Пример:

    bde.Отключиться();

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

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