Наши преимущества

dbExpress и Firebird Embeded

Ognev

ex-Team ITcluB
Команда форума
Credits
0
Всем доброго времени суток!

Подскажите, не сталкивался ли кто с такой проблемой. Есть база на Firebird Embeded и BDS2006. Через TSQLConnection подсоединяюсь к базе и пишу в нее. Все нормально. Пытаюсь через TSQLQuery сделать выборку. При попытке выполнить TSQLQuery.Open все вылетает с сообщением, fbembed.dll - доступ запрещен по такому-то адресу, попытка прочитать адрес 00000000. Подсунул пустую базу (без структуры) - как и положено, банально ругается на отсутствие обозначенной в запросе таблицы.
Может кто-то, кто хорошо разбирается в архитектуре dbExpress сходу подскажет, что это может быть? ... А у меня после многих бесплотных попыток только подозрение, что нужно переставить Delphi, а может и Windows, но уж больно не хочется. Но где-то в глубине души все еще живет надежда, что я лишь где-то банально туплю ...
 
С ходу сказать трудно. Возникают вопросы:
1. Какой SQL-запрос посылается (insert или delete пробовали)?
2. Если вылетает только на Select, то надо попробовать проверить, как работают TSQLDataSet или TSQLTable.
3. А демка DBXExplorer работает?
4. Можно ещё кусок кода привести - чтобы предметно что-то сказать.
 
Можно пояснить, зачем ты используешь dbExpress ? Там же есть встроенные IBX, а ещё лучше поставь FIB
 
Можно пояснить, зачем ты используешь dbExpress ? Там же есть встроенные IBX, а ещё лучше поставь FIB
Там же, это где? И потом, каждый пользуется тем, чем умеет или считает наиболее приспособленным для его задач. Если можно чуть более подробно развить эту тему, с указанием преимуществ тех самых IBX и FIB, то был бы благодарен.

С ходу сказать трудно. Возникают вопросы:
1. Какой SQL-запрос посылается (insert или delete пробовали)?
2. Если вылетает только на Select, то надо попробовать проверить, как работают TSQLDataSet или TSQLTable.
3. А демка DBXExplorer работает?
4. Можно ещё кусок кода привести - чтобы предметно что-то сказать.
Спасибо за направление. Однако, как показали недолгие терзания, дело не в каком-то компоненте dbExpress.
Вчера я успел выяснить следующий презабавный факт. При использовании FB 1.5.3 и FB 1.5.4 запрос на выборку с использование distinct приводит к access violatin, и не важно, какой компонент запрос выполнял. Для меня факт оказался более чем странным.
Сегодня решил все попробовать на FB 2. При подключении к базе я был обруган словами, что у меня не установлена Win1251 ... Так как для текущей задачи мне не нужен русский язык, я выморал из БД всякое упоминание об этой самой Win1251 и все заработало на ура. Ну и смутно стала понятна нелюбовь FB к distinct в моем случае ...
... Однако, вопрос остается - можно ли в FB Embeded использовать национальные кодировки, а если нельзя, то можно ли без этого как-то обойтись? Беглый просмотр сопровидительной к FB 1.5 документации для меня ничего не прояснил. Такой же просмотр документации к FB 2.0 навел на мысль, что поддержка кодировок находится в папке intl (?). Однако ее добавление под FB 1.5.4 не привело ни к каким изменениям - запрос как не выполнялся, так и не выполняется ... Может уважаемая публика сможет как-то прояснить эти моменты?
 
Сожалею, я больше проприетарными встроенными БД пользуюсь и MS SQL.

Но в выходные поинтересуюсь у гуру именно по FB (если не забуду, не будет поста - кинь месагу в личку).
 
Каюсь, грешен! Так и не почитал вдумчиво про FIB и IBX ...
Может кто-то слету подскажет, стоит ли на них переходить с dbExpress, если я все запросы модификации формирую вручную, и результаты выборок рассовываю в визуальные компоненты также.
 
FibPlus автоматом предлагают генерацию запросов select, insert, update, delete - Вы можете их модифицировать по своему вкусу. Имеют кучу событий практически на все случаи жизни. Заточены именно под Firebird/Interbase, то есть максимальное использование возможностей этих движков, в том числе по скорости доступа к базе и минимуму потребляемых ресурсов, так как не страдают поддержкой других баз данных.
Чуть не забыл - имеют возможность испотьзования двух транзакций - одной длинной на select и коротких на update.
 
Последнее редактирование модератором:
2 _Ognev_
Так решил проблему или нет? у меня аналогичная ситуация - FIB не может/хочет найти таблицу хотя через БД манагер вижу ее...
использую Delphi 7 +FIB + FireBird 2.0
 
dreadangel,
может не совсем ясно я тут по ходу выражался, но проблема оказлась исключительно (? ну, по крайней мере, других вариантов нет) в том, что в БД явно указывалась кодировка Win1251. Проблема решилась, когда я выморал напрочь в БД упоминание об этой кодировке. Можно ли решить этот вопрос иначе - не знаю (мне это было не нужно). Но после этого все заработало.

P.S. Все это касалось исключительно Firebird Embeded (!), а для обычного сервера все работало и с национальными кодировками.

P.P.S. Какое-то есть у меня смутное воспоминание, что если, например, таблицу создавать через IBexpert, то она добавляет к ней кавычки. Глянь в системных таблицах, как точно она называется и попробуй обратиться по этому точному имени - уж поможет или нет - не знаю.
 
_Ognev_
короче решилась моя проблема... дело было в том что имя таблицы было TypeContracts - но когда изменил в TYPECONTRACTS то все заработало...
Странно не правда ли? может ето глюк FiB+? у меня 6.5...
а с кодировками, не знаю - пока не столкнулся...
 
Думаю, стоит внимательно почитать про настройки компонентов FibPlus - их много и использование части из них приводит иногда к весьма странным и непредсказуемым для меня последствиям )))

P.S. Если в запросе участвуют системные таблицы, то в них все названия в верхнем регистре, так что и образец поиска должен быть такой же (Можно использовать, например, Upper() ... вроде так пишется ... но точно не помню).
 
Верх