![]() |
|
![]() ![]() ![]() |
|
zloyshprot |
|
|||
Новичок Профиль Группа: Участник Сообщений: 7 Регистрация: 9.1.2008 Репутация: нет Всего: нет |
Всем здравствуйте!
Значится пишу я программу, оболочку для работы с базами данных. Есть четкая задача, с заданными структурами баз данных, но вот захотелось попробовать сделать универсальности... Собственно делаю я и все меньше мне нравится что я делаю. Собственно я хотел бы чтобы мне сказали насколько это коряво и что так делать нельзя. Или наоборот =) Вот кусок кода: Изначально на форме есть объект TADOConnection и TPageControl. Все остальное генерится после подключения к базе. Программа расчитана на одновременную работу со сколько угодным кол-вом тейблов. Собственно кол-во объектов TTabSheet, TDBGrid, TDataSource, TADOTable генерятся под кол-во тейблов в базе. Так же уже есть монструозная функция добавления записей через кнопочку вызывающую AddForm.ShowModal();. Естественно форма тоже автогенерится, добавляет поля по количеству столбцов тейбла и тд...
Еще раз вопрос - это все бред или не совсем? |
|||
|
||||
Лапоть |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 185 Регистрация: 3.4.2009 Репутация: 1 Всего: 2 |
Вот и реализуй именно поставленную задачу. Универсальный станок типа ДБЕхплорер хорош в качестве учебного примера - и не более того. ЗЫ - коннектиться в FormCreate() - не есть хорошо (ИМХО). Юзер может просто случайно клацнуть по иконке программы... У тебя может быть одна таблица рабочая и к ней - ещё 27 таблиц-словариков. Наклепаешь ты 28 страниц, а работать с рабочей таблицей не сможешь. Это не бред. Это классические грабли. Таки лет .... тому назад я и сам на них наступил. ![]() Удачи тебе! ![]() |
|||
|
||||
zloyshprot |
|
|||
Новичок Профиль Группа: Участник Сообщений: 7 Регистрация: 9.1.2008 Репутация: нет Всего: нет |
Спасибо за критику =)
Я бодро взялся за реализацию такой универсальности, но чем дальше писал, тем больше понимал, что мне оно незачем. Расцениваю я сейчас всю проделанную работу как хороший опыт и откатываюсь до более статичной версии. Я не совсем понял, что имелось ввиду здесь:
Вобщем, спасибо =) |
|||
|
||||
vikaz |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 869 Регистрация: 15.2.2006 Репутация: 10 Всего: 12 |
Сейчас сам пишу программу, похожий проект! Сначала, с дуру, тоже хотел использовать несколько DBGrid, но потом понял, что это гиблое дело и сделал все на связке TTabControl + DBGridEh. При том, что программа может иметь сколь угодно закладок! При переходе на новую закладку (компонента TTabControl имеет только один лист, а при переключении на другую вкладку генерит событие с номером вкладки) просто перерисовываю DBGridEh и заполняю его! Получается шустро, проверял на Acer Aspire One.
ЗЫ. На изображении видно, как все отображается при проектировании и как в запущенной программе! Присоединённый файл ( Кол-во скачиваний: 21 ) ![]() -------------------- ![]() Нет ничего настолько исправного, чтобы в нем не было ошибок. /Ф. Петрарка/ |
|||
|
||||
zloyshprot |
|
||||
Новичок Профиль Группа: Участник Сообщений: 7 Регистрация: 9.1.2008 Репутация: нет Всего: нет |
Здорово, спасибо за столь полезную информацию. Можно поподробнее? Это будет что-то типа
на переключении вкладки? |
||||
|
|||||
zloyshprot |
|
|||
Новичок Профиль Группа: Участник Сообщений: 7 Регистрация: 9.1.2008 Репутация: нет Всего: нет |
Первый набросок:
|
|||
|
||||
vikaz |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 869 Регистрация: 15.2.2006 Репутация: 10 Всего: 12 |
Все верно! А если так переписать твой код:
Так будет правильнее!!!! -------------------- ![]() Нет ничего настолько исправного, чтобы в нем не было ошибок. /Ф. Петрарка/ |
|||
|
||||
zloyshprot |
|
||||
Новичок Профиль Группа: Участник Сообщений: 7 Регистрация: 9.1.2008 Репутация: нет Всего: нет |
Здорово, про switch я забыл совсем... А я вот прикидываю, а если пользователю понадобится найти, например, имя в одной таблице, переключится на другую и найти это же имя, а потом вернуться в прошлую и внести изменения. Ведь после переключений таблицы будут перерисовываться и результаты поиска сбрасываться. Единственно что я придумал, это создать под каждую таблицу String, в который, при переключении, будет записываться значение AdoTable->Filter и, при переключении обратно на таб, будет это значение восстанавливать. Или есть более вразумительные варианты? |
||||
|
|||||
vikaz |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 869 Регистрация: 15.2.2006 Репутация: 10 Всего: 12 |
Я делаю так же! Только не переменные использую, а std::List!!! -------------------- ![]() Нет ничего настолько исправного, чтобы в нем не было ошибок. /Ф. Петрарка/ |
|||
|
||||
zloyshprot |
|
||||
Новичок Профиль Группа: Участник Сообщений: 7 Регистрация: 9.1.2008 Репутация: нет Всего: нет |
Столкнулся проблемой
Редактирование осуществляется в форме, вызванной по
На FormAdd1 событие на onButtonClick:
Если при редактировании никакие данные не изменены, то получаю ошибку: "Не удается найти строку для обновления. Некоторые значения могли быть изменены со времени ее последнего чтения" И что-то никак не могу понять... Почему? Это сообщение отредактировал(а) zloyshprot - 16.1.2010, 20:05 |
||||
|
|||||
![]() ![]() ![]() |
Правила форума "С++ Builder" | |
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C++ Builder | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |