База данных
"An error occured while attempting to initialize the Borland Database Engine (error $2108)".
На другом компе я прописываю путь к базе данных, но ничего не меняется. Подскажите, что еще нужно прописать?
Я пишу базу данных. Подключаюсь билдером к Ms Access. В Панели управления в Источнике данных прописываю путь к базе данных. Все работает отлично. Но когда я переношу базу на другой комп и запускаю приложение, выскакивает ошибка
"An error occured while attempting to initialize the Borland Database Engine (error $2108)".
На другом компе я прописываю путь к базе данных, но ничего не меняется. Подскажите, что еще нужно прописать?
А собственно БДЕ установлен?
Я пишу базу данных. Подключаюсь билдером к Ms Access. В Панели управления в Источнике данных прописываю путь к базе данных. Все работает отлично. Но когда я переношу базу на другой комп и запускаю приложение, выскакивает ошибка
"An error occured while attempting to initialize the Borland Database Engine (error $2108)".
На другом компе я прописываю путь к базе данных, но ничего не меняется. Подскажите, что еще нужно прописать?
"Mark Shevchenko:
Для того, чтобы yстановить пpогpаммy, котоpая тpебyет BDE, есть несколько базовых пyтей, в частности:
1. Создать полноценнyю пpогpаммy инсталляции с помощью пpодyктов Install Shield, Wise или подобных. Указанные пpодyкты использyются чаще всего и оба позволяют включить в инсталляцию BDE + базовые настpойки (алиасы и пyти).
2. Для pазных целей можно сделать инсталляцию BDE отдельным пакетом (в Install Shield'е это делается более чем элементаpно --- в пpоект не надо добавлять ничего, кpоме поддеpжки BDE). Удобно в пpоцессе написания пpогpаммы для одного пользователя. Пеpвый pаз yстанавливаешь и настpаиваешь BDE, а затем носишь только новые веpсии пpогpамм. Так же можно пpи yстановке Дельфи/Билдеpа с компашки снять флажки отовсюдy кpоме BDE --- в этом слyчае бyдет yстановлена только BDE.
3. Есть возможность инсталлиpовать BDE pyчками. Пеpвый этап --- копиpование файлов, втоpой --- пpописывание pеестpа. Подpобно описано в tips'n'tricks y Акжана, см. http://delphi.da.ru.
Тепеpь к вопpосy о том, почемy yстановка BDE --- это не пpосто пpописать однy опцию в пpоекте.
Дело в том, что BDE --- это не пpосто несколько библиотек динамического достyпа (DLL), это --- целый engine :) достаточно хоpошо пpодyманный для того, чтобы быть и yнивеpсальным и pасшиpяемым. Занимает он в запакованном виде две дискеты, а в pаспакованном (+ файлы, котоpые включать в поставкy не нyжно) --- более десяти!
Естественно, не для всех задач подходит именно BDE (благодаpя своим особенностям). Во-пеpвых, возникают пpоблемы пpи pаботе с DBF фоpматов Clipper и Fox. Во-втоpых, не для всех пpогpамм тpебyются все возможности BDE, а быть они должны как можно меньше.
По фактy, сyществyет несколько альтеpнативных движков, подpобнее можно yзнать в ru.delphi.db"
Я пишу базу данных. Подключаюсь билдером к Ms Access. В Панели управления в Источнике данных прописываю путь к базе данных. Все работает отлично. Но когда я переношу базу на другой комп и запускаю приложение, выскакивает ошибка
"An error occured while attempting to initialize the Borland Database Engine (error $2108)".
На другом компе я прописываю путь к базе данных, но ничего не меняется. Подскажите, что еще нужно прописать?
Я с Access тоже делал, но использовал ADO.
За собой ничего тащить не надо.
Только строчку с путем к базе в ini или реестре нужно.
Для базы, которая предположительно будет расти быстро - не рекомендую. Пухнет он (Access) надо делать функции от вздутия. Или из меню Access - Сервис- Служебные программы - Сжать и восстановить базу. :(
Спасибо всем за советы! Все работает. Очень вам признателен :)
Признательность всеж лучше выражать в описании - проблема - как решилась. Напишите часть фака по этой теме.
Каждый из нас учится и ищет. Если вы задаете вопрос на форуме - пишите решение - от вас не убудет - кому то пригодится.
Если вам дано готовое решение - не стесняйтесь - пишите - что и как вам помогло, опишите что вы, и как делали, это поможет, и это не нужно гуру, это нужно всем. Завершайте свои вопросы.
Признательность всеж лучше выражать в описании - проблема - как решилась. Напишите часть фака по этой теме.
Каждый из нас учится и ищет. Если вы задаете вопрос на форуме - пишите решение - от вас не убудет - кому то пригодится.
Если вам дано готовое решение - не стесняйтесь - пишите - что и как вам помогло, опишите что вы, и как делали, это поможет, и это не нужно гуру, это нужно вам. Завершайте свои вопросы.
Признательность всеж лучше выражать в описании - проблема - как решилась. Напишите часть фака по этой теме.
Каждый из нас учится и ищет. Если вы задаете вопрос на форуме - пишите решение - от вас не убудет - кому то пригодится.
Если вам дано готовое решение - не стесняйтесь - пишите - что и как вам помогло, опишите что вы, и как делали, это поможет, и это не нужно гуру, это нужно всем. Завершайте свои вопросы.
Я пробовал устанавливать BDE на другой комп из инсталятора билдера, но это не очень удобно. Лучше воспользоваться отдельным инсталятором BDE. Вот ссылка:
http://slavik-hata.narod.ru/Install/bde.exe
После установки BDE все отлично работает!
вопрос наверное не столько по программированию, сколько по структуре и дизайну. но связан он тем не менее с базами данных. Так вот, излагаю задачу:
Есть база, в ней таблица, полей скажем в 20, число записей - пока не надоест. Тип полей - char(255), т.е. заполнение чисто текстовое. Задача - обеспечить для юзверя удобное и быстрое заполнение полей (разумеется включая понятное и чёткое отображение).
Просто я работал исключительно с одним компонентом визуализации - DBGrid, но там заполнять записи текстом - проблемно. Всё вытягивается в строку... Короче не подходит. Уверен, что кто-то из вас организовывал нечто подобное поэтому может подскажете, как это получше организовать в смысле, какие компоненты лучше использовать для введения текстовых данных, как расположить или что-то в этом роде.
Обсуждения приветствуются. Ссылки на подобные реализованные проекты - тоже
Кстати, кто-то там выше спрашивал про программное сжатие .mdb. Если интересно, вот код:
//WSCurrConn должна быть ConnectionString текущего TADOConnection, WSTempDB - путь к временной базе. Потом переименовываешь временную в текущую и все. Hу есессно у пользователя должны быть права и на момент сжатия всех надо отключить.
//---------
WideString WSCurrConn, WSTempDB;
Variant JE = Variant::CreateObject ("JRO.JetEngine");
try
{
HRESULT hResult = JE.OleFunction ("CompactDatabase", WSCurrConn,
"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + WSTempDB);
}
__finally
{
JE = Unassigned;
}
Vladimir V. Polyakov
всем здрэ =)
вопрос наверное не столько по программированию, сколько по структуре и дизайну. но связан он тем не менее с базами данных. Так вот, излагаю задачу:
Есть база, в ней таблица, полей скажем в 20, число записей - пока не надоест. Тип полей - char(255), т.е. заполнение чисто текстовое. Задача - обеспечить для юзверя удобное и быстрое заполнение полей (разумеется включая понятное и чёткое отображение).
Просто я работал исключительно с одним компонентом визуализации - DBGrid, но там заполнять записи текстом - проблемно. Всё вытягивается в строку... Короче не подходит. Уверен, что кто-то из вас организовывал нечто подобное поэтому может подскажете, как это получше организовать в смысле, какие компоненты лучше использовать для введения текстовых данных, как расположить или что-то в этом роде.
Обсуждения приветствуются. Ссылки на подобные реализованные проекты - тоже
Кстати, кто-то там выше спрашивал про программное сжатие .mdb. Если интересно, вот код:
//WSCurrConn должна быть ConnectionString текущего TADOConnection, WSTempDB - путь к временной базе. Потом переименовываешь временную в текущую и все. Hу есессно у пользователя должны быть права и на момент сжатия всех надо отключить.
//---------
WideString WSCurrConn, WSTempDB;
Variant JE = Variant::CreateObject ("JRO.JetEngine");
try
{
HRESULT hResult = JE.OleFunction ("CompactDatabase", WSCurrConn,
"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + WSTempDB);
}
__finally
{
JE = Unassigned;
}
Vladimir V. Polyakov
Thanks за сжатие, довольно просто сделано, я делал отделный dll модуль.
А grid действительно неудобен для заполнения, лучше сделать отдельную форму, можно также использовать компонент dxDBInspector от Developer Express он разворачивает поля или же навороченные grid - ы от той же фирмы, их можно разворачивать и расширять поля по своему усмотрению, а также изменения компонента сохраняются в ini или реестре. Пользуюсь MasterView, очень удобная вещь.
можно также использовать компонент dxDBInspector от Developer Express он разворачивает поля или же навороченные grid - ы от той же фирмы, их можно разворачивать и расширять поля по своему усмотрению
то есть они прямо в режиме заполнения позволяют разворачивать поля? попробуем-с. а есть прямые ссылки для скачивания на эти компоненты?
то есть они прямо в режиме заполнения позволяют разворачивать поля? попробуем-с. а есть прямые ссылки для скачивания на эти компоненты?
не, у меня на диске компоненты
а все гриды могут редактироваться, им надо настроить свойства.
всем здрэ =)
вопрос наверное не столько по программированию, сколько по структуре и дизайну. но связан он тем не менее с базами данных. Так вот, излагаю задачу:
Есть база, в ней таблица, полей скажем в 20, число записей - пока не надоест. Тип полей - char(255), т.е. заполнение чисто текстовое. Задача - обеспечить для юзверя удобное и быстрое заполнение полей (разумеется включая понятное и чёткое отображение).
Просто я работал исключительно с одним компонентом визуализации - DBGrid, но там заполнять записи текстом - проблемно. Всё вытягивается в строку... Короче не подходит. Уверен, что кто-то из вас организовывал нечто подобное поэтому может подскажете, как это получше организовать в смысле, какие компоненты лучше использовать для введения текстовых данных, как расположить или что-то в этом роде.
Обсуждения приветствуются. Ссылки на подобные реализованные проекты - тоже
Кстати, кто-то там выше спрашивал про программное сжатие .mdb. Если интересно, вот код:
//WSCurrConn должна быть ConnectionString текущего TADOConnection, WSTempDB - путь к временной базе. Потом переименовываешь временную в текущую и все. Hу есессно у пользователя должны быть права и на момент сжатия всех надо отключить.
//---------
WideString WSCurrConn, WSTempDB;
Variant JE = Variant::CreateObject ("JRO.JetEngine");
try
{
HRESULT hResult = JE.OleFunction ("CompactDatabase", WSCurrConn,
"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + WSTempDB);
}
__finally
{
JE = Unassigned;
}
Vladimir V. Polyakov
Вместо DBGrid можно поставить кучу DBEdit-ов таких размеров, какие тебе нужны.
Вместо DBGrid можно поставить кучу DBEdit-ов таких размеров, какие тебе нужны.
можно то оно можно. только как ты себе это представляешь? порядка 20 полей, какие-то из них просто для заполнения цифрами, какие-то текстовыми данными, притом объёмными. Всё это в перемешку в одной записи. И таких записей для 1 таблицы будет много.
Разворачивающиеся ячейки - это было бы самое то =)
2mainigor: а возможность выложить есть? =)) просто очень нужно =)
можно то оно можно. только как ты себе это представляешь? порядка 20 полей, какие-то из них просто для заполнения цифрами, какие-то текстовыми данными, притом объёмными. Всё это в перемешку в одной записи. И таких записей для 1 таблицы будет много.
Разворачивающиеся ячейки - это было бы самое то =)
2mainigor: а возможность выложить есть? =)) просто очень нужно =)
А не лучше ли для таких записей использовать формат поля не Text, a Memo? Тогда на форму можно поставить DBMemo и нормально просматривать содержимое поля.
Кстати, кто-то там выше спрашивал про программное сжатие .mdb. Если интересно, вот код:
//WSCurrConn должна быть ConnectionString текущего TADOConnection, WSTempDB - путь к временной базе. Потом переименовываешь временную в текущую и все. Hу есессно у пользователя должны быть права и на момент сжатия всех надо отключить.
//---------
WideString WSCurrConn, WSTempDB;
Variant JE = Variant::CreateObject ("JRO.JetEngine");
try
{
HRESULT hResult = JE.OleFunction ("CompactDatabase", WSCurrConn,
"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + WSTempDB);
}
__finally
{
JE = Unassigned;
}
Vladimir V. Polyakov
У меня выскакивает еррор
что не так?
У меня выскакивает еррор
что не так?
на какой строке выскакивает? тут вааапще-то только два варианта, но всё же разница принципиальная м.б.
на какой строке выскакивает? тут вааапще-то только два варианта, но всё же разница принципиальная м.б.
"Provider=Microsoft.Jet.OLEDB.4.0;Data Source="+WSTempDB);
"Provider=Microsoft.Jet.OLEDB.4.0;Data Source="+WSTempDB);
Неверный тип переменной - это значицца ты в параметрах JE.OleFunction передаёшь переменные типа AnsiString вместо WideString. Должно быть именно WideString
WSCurrConn = Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\\123.mdb;Persist Security Info=False";
WSTempDB = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\\132_temp.mdb";
Variant JE =Variant::CreateObject("JRO.JetEngine");
try
{
HRESULT hResult = JE.OleFunction("CompactDatabase",WSCurrConn ,
WSTempDB);
}
__finally
{
JE = Unassigned;
}
Неверный тип переменной - это значицца ты в параметрах JE.OleFunction передаёшь переменные типа AnsiString вместо WideString. Должно быть именно WideString
WSCurrConn = Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\\123.mdb;Persist Security Info=False";
WSTempDB = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\\132_temp.mdb";
Variant JE =Variant::CreateObject("JRO.JetEngine");
try
{
HRESULT hResult = JE.OleFunction("CompactDatabase",WSCurrConn ,
WSTempDB);
}
__finally
{
JE = Unassigned;
}
Сделал, теперь ошибка:
"Project test.exe raised exception class EoleSysError with message 'Exception occurred'. Process stoped."
:'(
Сделал, теперь ошибка:
"Project test.exe raised exception class EoleSysError with message 'Exception occurred'. Process stoped."
:'(
Эта ошибка при компиляции, а при работе все норма, даже сжимается БД. Главное чтоб БД не запортилась со временм :(