Страница 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 . Возникшие сложные вопросы по архитектуре БД задавай в соответствующем разделе.