Внешняя компонента для работы с базами данных 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.Отключиться(); |