Страница 1 из 1

Builder C++ 6.0 и Interbase разработка клиентского приложени

Добавлено: 14 мар 2011, 13:02
Anddros
Здравствуйте !!!. Помогите пожалуйста как разработать клиентское приложение на Builder С++ с нуля. Просмотрел кучу информации , включая http://www.ibase.ru/devinfo/ibx.htm, пока безрезультатно . Нужно соединить между собою данные из пяти таблиц (БД создал), чтобы при нажатии на одной из записей главной таблицы, отображались связанные по внешнему ключу данные из остальных таблиц, получается нужно будет разместить на форме одну главную таблицу и еще остальные 4 таблицы, ну и естественно нужно чтобы всё это редактировалось. Это наверное практически нереально :? .
А еще , почему когда я использую OpenDialog для открытия базы данных , она не открывается и пишет ошибку "unavailable database". обработчик событий выглядит так:

Код: Выделить всё

__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::BtOpenClick(TObject *Sender)
{
if (OpenDialog->Execute())
{
EdDataBaseName->Text=OpenDialog->FileName;
DataModule2->IBDatabase1->DatabaseName=OpenDialog->FileName;
}
DataModule2->IBDatabase1->Connected=true;
DataModule2->IBQuery1->Active=true;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::BtRefreshClick(TObject *Sender)
{
 DataModule2->IBQuery1->Transaction->Commit();
  DataModule2->IBQuery1->Active=true;
}
//---------------------------------------------------------------------------
EdDataBaseName - назвал поле Edit.
BtRefreshClick - это обновить данные из БД.
Хотя в IBDatabase тоже прописан путь к БД и при нажатии кнопки Test появляется окно о положительном результате.

Re: Builder C++ 6.0 и Interbase разработка клиентского прило

Добавлено: 14 мар 2011, 14:28
Dimitry Sibiryakov
Эта "куча информации", очевидно не включала в себя ни FAQ, ни статью про JOIN.

Re: Builder C++ 6.0 и Interbase разработка клиентского прило

Добавлено: 14 мар 2011, 16:26
Anddros
Не встречал более менее доходчивой информации. :( . Вот досада.

Re: Builder C++ 6.0 и Interbase разработка клиентского прило

Добавлено: 15 мар 2011, 23:31
kdv
хреново читал статью. Кроме того, unavailable database есть в FAQ:
http://www.ibase.ru/ibfaq.htm#unavail
Не встречал более менее доходчивой информации.
просто поиском пользоваться не умеешь.
До кучи. Код
DataModule2->IBQuery1->Transaction->Commit();
DataModule2->IBQuery1->Active=true;
полная чешуя. про это в ibx.htm написано. читай еще раз.

Re: Builder C++ 6.0 и Interbase разработка клиентского прило

Добавлено: 16 мар 2011, 08:48
Anddros
Я нашёл это в Delfi, подумал что между им и Builder C++ много общего. В статьях , что я находил всегда указано Delfi/Builder C++.
Всё равно интересует вопрос , мне что нужно использовать 5 DBGrid и 5 IBDataSet? хотя очевидно что 5 DBGrid уж точно, раз у меня 5 таблиц в БД. и где получается писать запросы для синхронного отображения данных в 5 DBGrid , хотя для отображения данных из некоторых таблиц, думаю целесообразней будет использовать в TEdit Информации в этих таблицах БД много.
P.S. Прошу прощения за глупые вопросы.

Re: Builder C++ 6.0 и Interbase разработка клиентского прило

Добавлено: 16 мар 2011, 09:29
Anddros
А правда ли что делать изменения прямо в DBGrid ооочень плохая идея, а для внесения изменений лучше всего использовать специальную дополнительную форму?

Re: Builder C++ 6.0 и Interbase разработка клиентского прило

Добавлено: 16 мар 2011, 13:39
kdv
мне что нужно использовать 5 DBGrid и 5 IBDataSet?
понятия не имею. если 5 разных таблиц надо редактировать, то да, 5 дбгридов. Если не одновременно, можно учудить один датасет и один дбгрид, и "переключать" в датасете запросы для редактирования конкретной таблицы.
А правда ли что делать изменения прямо в DBGrid ооочень плохая идея, а для внесения изменений лучше всего использовать специальную дополнительную форму?
только если много полей, они не вмещаются в грид на экране, есть специфика заполнения полей которую неудобно навешивать на грид, и т.д.

p.s. InterBase какой?

Re: Builder C++ 6.0 и Interbase разработка клиентского прило

Добавлено: 16 мар 2011, 15:56
Anddros
Interbase 6.5. Вроде всё должно поместиться на одной экранной форме. Я рассчитал. есть одна главная таблица и у нее одна дочерняя, а эта дочерняя в свою очередь является родительской для остальных три. Вот так в общем.

Re: Builder C++ 6.0 и Interbase разработка клиентского прило

Добавлено: 16 мар 2011, 16:02
Anddros
"учудить один датасет и один дбгрид, и "переключать" в датасете запросы для редактирования конкретной таблицы" - думаю это лучше отставить.
А тогда где запросы вводить для синхронного обображения? Нужно чтоли Ibquery размещать? А редактирование данных как и где лучше осуществлять?

Re: Builder C++ 6.0 и Interbase разработка клиентского прило

Добавлено: 17 мар 2011, 10:26
kdv
Interbase 6.5.
куплен? зачем используется, если ему уже 9 лет?
А тогда где запросы вводить для синхронного обображения? Нужно чтоли Ibquery размещать? А редактирование данных как и где лучше осуществлять?
вы примеры хоть какие-нибудь смотрели? Сами что-то пробовали? Есть подозрение, что нет, только теоретизируете.
Что значит "синхронное отображение" - мастер-деталь?
www.ibase.ru/devinfo/ibx.htm читали?

Re: Builder C++ 6.0 и Interbase разработка клиентского прило

Добавлено: 17 мар 2011, 10:52
Anddros
Да . мастер-деталь. Верно. Начало в общем получаться. Только намучился не пойму с чем: выставляю все свойства в инспекторе объекта , а нифига не отображаются данные в DBgrid. Тестирование соединение происходит корректно (при нажатии кнопки Test в Database), но потом в этом же окне нажимаю ОК тут же пишет какую то ошибку "......... Disconnect and continue?", первые слова не помню к сожалению. Пока эта ошибка не исчезла при нажатии кнопки ОК после тестирования (кнопка Test) данные не выводились, а потом вдруг всё стало отображаться. В общем думаю связано или с IBDataset либо с IBTransaction . На ноутбуке установлена Windows 7, может стоит всё таки на Windows XP перейти при работе с Interbase? это нужно устанавливать тогда вторую операционку, дело не сложное , но нехотелось бы. Проще конечно Windows XP установить на виртуальную машину (VirtualBox), а интересно будет ли тогда Interbase работать с виртуальной машиной?
Этот Interbase 6.5 дал преподаватель. и Firebird использую версии 1.5. я учусь заочно-дистанционно. приходится самому постигать всё самостоятельно. Спросить по всяким мелочам не у кого просто.

Re: Builder C++ 6.0 и Interbase разработка клиентского прило

Добавлено: 17 мар 2011, 10:58
Anddros
Тьфу . что то напутал немного. Гуи использую IBExpert 6.5, а СУБД Firebird 1.5.

Re: Builder C++ 6.0 и Interbase разработка клиентского прило

Добавлено: 17 мар 2011, 20:14
kdv
В общем думаю связано или с IBDataset либо с IBTransaction .
это связано с кривым программированием.
Этот Interbase 6.5 дал преподаватель. и Firebird использую версии 1.5. я учусь заочно-дистанционно. приходится самому постигать всё самостоятельно. Спросить по всяким мелочам не у кого просто.
1. IB 6.5 не сертифицирован под Windows 7. В те времена Windows 7 явно даже в планах не было.
2. по мелочам спрашивать действительно не у кого. нужно ЧИТАТЬ форумы, книжки, сайты, смотреть примеры. И спрашивать только ПОТОМ.
первые слова не помню к сожалению.
детский лепет. когда вы что-то такое спрашиваете на форумах, редко что удается опознать телепатически. Поэтому тексты ошибок нужно приводить ВСЕГДА. Перед тем как спросить об ошибке, нужно текст ошибки вбить в яндекс или в гугл, и поискать самостоятельно. Вы отнюдь не первый, не сотый и даже не стотысячный, у кого частая ошибка появляется впервые.
Гуи использую IBExpert 6.5
нет такого IBExpert. У него уже много лет версии прописываются как год.месяц.день.

Re: Builder C++ 6.0 и Interbase разработка клиентского прило

Добавлено: 18 мар 2011, 08:47
Anddros
Да действительно. Version 2008.02.18. Как всегда из за собственной невнимательности.

Re: Builder C++ 6.0 и Interbase разработка клиентского прило

Добавлено: 18 мар 2011, 08:49
Anddros
В общем у меня всё работает и на Windows 7 (пока работает)