Внешняя компонента для доступа к paradox через BDE (BDEBase 2.0.3.20 от 14.06.2006)
Встала как-то передо мной задача работать с таблицами парадокса в 1С. Так как встроенных средств для этого нет, а побродив по форумам я наткнулся на лишь на пару статей, в которых описывалась работа с парадоксом через ADO, что мне показалось не очень удобно, я решил написать свою компоненту для доступа.
Методы старался делать где это возможно максимально близкие к xBase.
Вроде самое необходимое реализовал. Впоследствии компонента будет дополняться.
Методы старался делать где это возможно максимально близкие к xBase.
Вроде самое необходимое реализовал. Впоследствии компонента будет дополняться.
Комментарии
Избранное
Подписка
Сортировка:
Древо
Пример создания таблицы paradox
Попытка
База = New("Addin.BDEBase");
Исключение
Сообщить("Не удалось создать объекты Addin.BDEBase!");
КонецПопытки;
//База.РежимОтладки(1);
База.ДобавитьПоле("Fml", "S" , 50 , 1); // фио
База.СоздатьФайл("D:\newdb.db",);
База.Добавить();
//База.Fml = Стр.Fml;
База.УстановитьЗначениеПоля("Fml","Фёдор Емельяненко");
База.Записать();
База.ЗакрытьФайл();
Попытка
База = New("Addin.BDEBase");
Исключение
Сообщить("Не удалось создать объекты Addin.BDEBase!");
КонецПопытки;
//База.РежимОтладки(1);
База.ДобавитьПоле("Fml", "S" , 50 , 1); // фио
База.СоздатьФайл("D:\newdb.db",);
База.Добавить();
//База.Fml = Стр.Fml;
База.УстановитьЗначениеПоля("Fml","Фёдор Емельяненко");
База.Записать();
База.ЗакрытьФайл();
Здесь уже использовали эту разработку www.paltusov.ru Вот для обмена с R-Keeper………
Прикрепленные файлы:
restdemo.zip
Если ЗагрузитьВнешнююКомпоненту("BDEBase.dll")=0 Тогда
Сообщить("Не удалось обнаружить компоненту BDEBase.dll!");
КонецЕсли;
Попытка
БДЕ = СоздатьОбъект("Addin.BDEBase");
Исключение
Сообщить("Не удалось создать объекты Addin.dbBase!");
КонецПопытки;
БДЕ.ОткрытьФайл ( "C:\bdeBase\pLogData.DB", );
пока БДЕ.ВКонце() = 0 Цикл
сообщить(БДЕ.Num);
Бде.Следующая();
КонецЦикла;
Сообщить("Не удалось обнаружить компоненту BDEBase.dll!");
КонецЕсли;
Попытка
БДЕ = СоздатьОбъект("Addin.BDEBase");
Исключение
Сообщить("Не удалось создать объекты Addin.dbBase!");
КонецПопытки;
БДЕ.ОткрытьФайл ( "C:\bdeBase\pLogData.DB", );
пока БДЕ.ВКонце() = 0 Цикл
сообщить(БДЕ.Num);
Бде.Следующая();
КонецЦикла;
Здравствуйте!
Давно не пользовался. а на днях попробовал и получил по варианту подключения компоненты 2 ошибку 0х800004005 под Win7. Придушил Брандмауэр полностью... не помогает. По варианту подключения компоненты 1 пишет, что отсутствует CLSID! Я так понимаю он где то в системном реестре пишется, ну и радость эта имеет двоичное представление??? Что характерно у Jmail.dll, FormEx, 1CPP эта радость есть и не требует никаких усилий. Думаю: если бы Вы перетранслировать старые исходники в какой-то новой версиии интерпретатора то проблемма снялась бы сама... С уважением Евгений
Давно не пользовался. а на днях попробовал и получил по варианту подключения компоненты 2 ошибку 0х800004005 под Win7. Придушил Брандмауэр полностью... не помогает. По варианту подключения компоненты 1 пишет, что отсутствует CLSID! Я так понимаю он где то в системном реестре пишется, ну и радость эта имеет двоичное представление??? Что характерно у Jmail.dll, FormEx, 1CPP эта радость есть и не требует никаких усилий. Думаю: если бы Вы перетранслировать старые исходники в какой-то новой версиии интерпретатора то проблемма снялась бы сама... С уважением Евгений
Извините! Вроде сам разрулил! 2 строчки в реестре и всё! Однако... это требует достаточной квалификации. Хотя в отношении Вашей *.dll, вполне возможно, что Вам всё-равно, кто и как её будет истользовать... Работает то классно!
Пытаюсь подрубится к СКУД ОРИОН с помощью длл...Всё ок только отфильтровать по дате не получается...Может подскажет кто как отфильтровать записи за определенный период?в строку загоняю отбор "([TimeVal]>'"+НачДата+"') и ([TimeVal]<'"+конецдня(КонДата)+"') а тащит все записи с начала года. Хотя датаНач = 01.12.2012 КонДата = 31.12.2012
Фильтрация(<Режим>,<КритерийФильтрации>,<Параметры>)
Назначение:
Установить режим фильтрации записей в базе.
Возвращает:
Текущее числовое значение режима фильтрации (на момент до исполнения метода).
Параметры:
<Режим> - выражение: 1 - задает режим фильтрации в базе, 0 - снимает (по умолчанию - 0)
<КритерийФильтрации> - В описании критерия фильтрации можно указывать имена полей и литералы (явно заданные значения); можно использовать обычные операции отношения и логические операторы И , ИЛИ , НЕ , например:
Эта запись фильтра оставит в таблице записи, в которых поля Doljnost=""доцент"" и TabNum больше 3000
Фильтрация(1,"([Doljnost]='доцент') И ([TabNum] > 3000)",0)
Назначение:
Установить режим фильтрации записей в базе.
Возвращает:
Текущее числовое значение режима фильтрации (на момент до исполнения метода).
Параметры:
<Режим> - выражение: 1 - задает режим фильтрации в базе, 0 - снимает (по умолчанию - 0)
<КритерийФильтрации> - В описании критерия фильтрации можно указывать имена полей и литералы (явно заданные значения); можно использовать обычные операции отношения и логические операторы И , ИЛИ , НЕ , например:
Эта запись фильтра оставит в таблице записи, в которых поля Doljnost=""доцент"" и TabNum больше 3000
Фильтрация(1,"([Doljnost]='доцент') И ([TabNum] > 3000)",0)
Всё получилось! нужны пробелы.
еще интересует последний параметр
Фильтрация(<Режим>,<КритерийФильтрации>,<Параметры>) нигде не нашёл описание, а так обработка супер!
measure.Фильтрация(1,"(([Terminal]=7815) или ([Terminal]=7814)) И ([RecDTime]>'"+строка(НачДата)+"') И ([RecDTime]<'"+строка(КонДата+1)+"')",0);
еще интересует последний параметр
Фильтрация(<Режим>,<КритерийФильтрации>,<Параметры>) нигде не нашёл описание, а так обработка супер!
BioAngel, Здравствуйте !
Использую вашу разработку для регулярного чтения данных из другой базы данных, но функция ОткрытьФайл() срабатывает только на 100 файлах, затем на 101-м файле возвращает "0". Это ограничения компоненты или в каких то настройках BDE можно увеличить этот параметр? Файлы начинают открываться только после перезапуска сеанса 1С.
Использую вашу разработку для регулярного чтения данных из другой базы данных, но функция ОткрытьФайл() срабатывает только на 100 файлах, затем на 101-м файле возвращает "0". Это ограничения компоненты или в каких то настройках BDE можно увеличить этот параметр? Файлы начинают открываться только после перезапуска сеанса 1С.
Новые вопросы с вознаграждением
Автор темы объявил вознаграждение за найденный ответ, его получит тот, кто первый поможет автору.