gifts2017

Firebird (SQL) - ВК для чтения без дополнительных настроек (Native API)

Опубликовал Андрей Акулов (DrAku1a) в раздел Программирование - Внешние компоненты

ВК для 1С 8.2 (управляемое и обычное приложение)
Позволяет выполнять запросы выборки данных (SELECT, другие не пробовал - возможно, тоже)
Возможна удаленная работа (т.е. когда база firebird находится на другом компьютере локальной сети).
Не требует дополнительных драйверов - всё, что нужно, вложено в комплекте!

Конечно, в 1С имеется встроенный механизм чтения данных из баз данных Firebird, о нем можно почитать, например тут:

http://infostart.ru/public/154693/

Только вот, не всегда этот механизм работает - танцы с бубном, как правило, обеспечены...  

Те, кто работал с Firebird в Delphi - знают, как просто использовать компоненты InterBase для работы с данными: нужна всего одна внешняя DLL - GDS32.DLL

Взял на себя смелость, используя технологию Native API - набросать ВК для простого чтения данных. Ничего особенного, вроде бы...

Принцип работы ВК - прост: принимает запрос и имя временного файла XML, куда кладется результат выполнения запроса или описание ошибки. Далее с этими данными вполне сможет работать 1С штатным механизмом чтения...

Получилось просто и быстро.

 

Главный бонус - можно читать данные с удаленного компьютера, если на нем открыт стандартный порт сервера Firebird (вроде, 3050) - для этого перед локальным путем базы на сервере указываем его сетевое имя и через двоеточие - путь, например:

server1:c:\data\base1.fdb

здесь, server1  - имя компьютера в сети (где база лежит),  c:\data\base1.fdb- локальный путь к базе на компьютере server1.

Если кто не знает, что такое Firebird: http://ru.wikipedia.org/wiki/Firebird 

База данных Firebird  используется, например, в пропускной системе PERCO S-20.

 

В комплекте, помимо  GDS32.DLL положил несколько вспомогательных DLL, необходимых первой для работы.

Скачать файлы

Наименование Файл Версия Размер Кол. Скачив.
v8_fbsql.zip
.zip 1,13Mb
03.01.13
102
.zip 1,13Mb 102 Скачать
Исходники (Delphi 7)
.zip 8,93Kb
03.01.13
24
.zip 8,93Kb 24 Скачать

См. также

Подписаться Добавить вознаграждение

Комментарии

1. andrewks 03.01.13 09:48
что-то мне кажется, что общение через временный файл XML будет не совсем удобным (хотя, как один из вариантов коммуникации вполне может присутствовать).
гораздо удобнее сразу получить в 1с внутреннее представление таблички.
а уж описание ошибки и подавно нужно в AddError() подавать
2. andrewks 03.01.13 09:52
кстати, интерфейсный модуль свой использовали, или из http://infostart.ru/public/81644/ ?
3. Андрей Акулов (DrAku1a) 03.01.13 10:05
(2) именно, хотя для основы брался модуль-наследник: http://infostart.ru/public/88060/
4. andrewks 03.01.13 10:21
(3) DrAku1a, тогда сразу хочу задать Вам дополнительный вопрос ;-)

не наблюдали ли Вы каких-либо проблем в момент загрузки dll-ки на компах с Win2008 x64 и Win7 x64?
5. Андрей Акулов (DrAku1a) 03.01.13 10:26
Абсолютно никаких проблем не наблюдал на Win 2008 x64. На Win7 x64 не тестировалось.
6. Alexey K (kanalex) 26.02.13 12:16
а запросы INSER UPDATE пробовал кто-нибудь с этой компонентой делать?
SELECT мало интересен для нашей задачи
7. Андрей Акулов (DrAku1a) 24.05.13 05:21
(4), я в (5) не совсем прав. теслировал на 32-битной платформе. Протестировал в регламентном задании на 64-битном сервере. DLL не загружается. И это, наверное, естественно...
8. EvgeniuXP EvgeniuXP (EvgeniuXP) 18.12.13 18:31
а двоичные данные можно вытащить? (фотографии, например)
9. Андрей Акулов (DrAku1a) 19.12.13 04:36
(8) нет, с картинкой не работали - только текст/дата/булево/число. Впрочем, исходники есть - можете реализовать чтение BLOB-полей.
10. EvgeniuXP EvgeniuXP (EvgeniuXP) 20.12.13 18:11
(9) спасибо, через внешние источники всё достал, включая фото :)
11. Сергей Концеропятов (skyp) 06.02.14 17:42
Спасибо за разработку, очень помогло при работе с программами расчета окон!
12. Андрей Акулов (DrAku1a) 06.02.14 18:17
(11) Пожалуйста.

Надо бы перекомпилить на Win64 на новой дельфе XE5 (на демо версии наверное должно получиться :-) )...
13. Олег Шалимов (CaSH_2004) 20.06.14 23:05
(0)DrAku1a
потребовалось подключится к базе, друг дал образец своей базы, логин/пароль, скачал твое чудо и все заполнил и нажал "Выполнить", на что выдано было: Внешняя компонента : unavailable database.

Скажи какие условия нужно выполнить чтобы взлетело?
GDS32 у меня не регистрируется через regsvr32 на WinXP - говорит что нет точки входа.

Да и вообще странно почему нигде не требуется указание логина/пароля - как происходит авторизация в базе то?
14. Андрей Акулов (DrAku1a) 23.06.14 02:11
(13) Данная компонента подключается к базе, а не к файлу. Установите Firebird. Авторизация по-умолчанию
DB.Params.Add('user_name=SYSDBA');
DB.Params.Add('password=masterkey');

Это по поводу авторизации.
15. Юрий Вячеславович (3762515) 11.07.14 09:11
Внешняя компонента : Dynamic SQL Error
SQL error code = -204
Table unknown
ACCESS_POINTS
At line 1, column 15.

В чём может быть проблема?
16. Андрей Акулов (DrAku1a) 11.07.14 15:38
Table unknown

Вольный перевод: Не найдена таблица. Проверьте к той ли базе Вы подключились и есть ли в ней таблица "ACCESS_POINTS".
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа