Страница 1 из 1
Помогите новичку правильно подключить базу FireBird
Добавлено: 07 сен 2006, 17:15
Axelus
Я хочу перевести свой проект с BDE на FireBird.
Для начала для освоения пытаюсь создать простенький проект, подключить базу FireBird, потестировать элементарные вещи с ней. Но сразу возникает проблема:
Почему-то не выполняется функция TIBTable.FindFirst...
Причем и результат возвращает о неудаче и курсор не переводит на первую запись.
Просто не работает и все, хотя DBGrid показывает содержимое таблицы.
Кстати TIBTable.First работает.
Описание тестового проекта:
Я создал простой проект с одной формой, одной базой данных TIBDataBase, одной транзакцией, одной таблицей TIBTable, одним TDBGrid и кнопкой. В дизайн-тайм у меня все отключено. Открываю базу и транзакцию при открытии таблицы:
Код: Выделить всё
procedure TForm1.FormShow(Sender: TObject);
begin
IBDataBase1.Connected := true;
IBTransaction1.Active := true;
IBTable1.Open;
end;
Таблица видится в Гриде, навигация работает. При нажатии на кнопку пытаюсь выполнить FindFirst.
Код: Выделить всё
procedure TForm1.BitBtn1Click(Sender: TObject);
begin
if IBTable1.FindFirst then ShowMessage('Работает');
end;

НЕ РАБОТАЕТ!!!

Причем при закрытии единственной формы программа виснет!
Подскажите, в чем может быть проблема?
Может я базу неправильно открываю?
У меня Delphi 7, FireBird 1.5.3
Добавлено: 07 сен 2006, 17:30
WildSery
Здесь не форум по Delphi, к твоему сожалению.
Re: Помогите новичку правильно подключить базу FireBird
Добавлено: 07 сен 2006, 17:48
Merlin
Axelus писал(а):
Подскажите, в чем может быть проблема?
TIBTable забудь как кошмарный сон. Здесь же, на
www.ibase.ru , рекомендованы книжки и по SQL и по разработке приложений. Не обижайся, но а) вспоминать что и как с этим чудом (TIBTable) никто не будет, все первую рекомендацию давным-давно выполнили, а про остальное для твоего текущего уровня уж очень издалека начинать и много говорить. Освоишь принципы - приходи взад с проблемами. По SQL. По Delphi действительно лучше куда-нить в другое место.
Добавлено: 07 сен 2006, 19:44
kdv
читай
www.ibase.ru/devinfo/ibx.htm
насчет FindFirst. Этот метод работает только если заранее установлен ФИЛЬТР. И где он у тебя в коде установлен? А в клиент-сервере фильтр как правило это where в запросе.
Более того, FindRecord переопределен ТОЛЬКО у BDEDataSet. И ни у какого другого датасета во всем каталоге source дельфей.
Re: Помогите новичку правильно подключить базу FireBird
Добавлено: 08 сен 2006, 07:24
stix-s
Axelus писал(а):Я хочу перевести свой проект с BDE на FireBird.
Я создал простой проект с одной формой, одной базой данных TIBDataBase, одной транзакцией, одной таблицей TIBTable, одним
связался я как-то с проектом переделки с BDE на FireBird, тоже по лености сначала думал понатыкаю TIBTable вместо TTable и все шоколадно будет

да не тут-то было

началось все с того, что в старом проекте очень любили у TTable фильтр использовать

а вот у моей версии IBX в TIBTable фильтр просто НЕ РАБОТАЛ! свойство было, но не использовалось

так что ИМХО - обкладывайся книжками по FB, SQL, забудь про TIBTable.
Добавлено: 08 сен 2006, 08:09
Dimitry Sibiryakov
Ну и я от себя добавлю...
Клиент-сервер отличается от десктопа в первую очередь идеологией. И именно ее надо с хрустом ломать когда берешься за переход. Простейший пример: в десктопе сначала показывают список а потом ищут в нем по каким-то критериям. В К-С сначала задают критерии а потом видят список.
Добавлено: 08 сен 2006, 12:37
Axelus
Я прекрасно понимаю, что это форум по SQL.
Именно для перехода на SQL я и решил переписать проект, поскольку в Paradox'e при наличии 25 000 записей и 15 пользователей в БД начались жуткие тормоза.
Но мне сначала необходимо просто перевести проект на другую базу, поняв разницу в работе компонент, а потом уже переписывать всю обработку на SQL.
Тем не менее спасибо тем, кто откликнулся...
Добавлено: 08 сен 2006, 12:49
SAMZ
Axelus писал(а):Я прекрасно понимаю, что это форум по SQL.
Именно для перехода на SQL я и решил переписать проект, поскольку в Paradox'e при наличии 25 000 записей и 15 пользователей в БД начались жуткие тормоза....
Я вовсе не сторонник парадокса, но долго на нем работал и хочу сказать в его защиту, что при грамотной работе на парадоксе при 25000 записей и 15 пользователей работать вполне можно и без всяких тормозов.
Добавлено: 08 сен 2006, 12:49
Dimitry Sibiryakov
Axelus писал(а):Но мне сначала необходимо просто перевести проект на другую базу, поняв разницу в работе компонент, а потом уже переписывать всю обработку на SQL.
Не получится "просто". Тормоза будут просто ужасающими.
Добавлено: 08 сен 2006, 14:49
CyberMax
2
Axelus.
Аналогия прямой конвертации базы с десктопа на клиент-сервер - работа в dos'е под windows'ом. Помнишь еще, что это такое? Вроде все тоже самое, но периодически вылетаешь с "недопустимой операцией", тормоза и все такое. Лучше поработай над новой структурой базы, нормализуй ее. Создай таблички с тестовыми данными и начинай писать изначально полноценное К-С приложения (то бишь сразу переходи на win32). Прочитай статьи на
www.ibase.ru . Возникшие сложные вопросы по архитектуре БД задавай в соответствующем разделе.