|
Тема |
Re: По-подробен опит [re: andrew_nikoloff] |
|
Автор |
NikB (любопитен) |
|
Публикувано | 05.07.04 11:03 |
|
|
Ще бъда подробен, но се надявам да не се отклоняваме много в обсъждане на странични въпроси :)
Имам си технология за по-чевръстичко правене на проекти с бази данни.
В проектите обикновено имам един датамодул, където имам някакви наследници на tDataSet за по-важните ми таблици и SQL.
При инициализация на датамодула за всяко поле от датасетите формирам ( по някаква логика):
- DisplayName, в зависимост от FieldName (спазвам някакви правила за съответствие, за универсалните имена - универсални, за специфичните - специфични);
- Tag, в съответствие от Tag на датасетите (отразяват връзките между таблиците, така че да позволяват лесно редактиране на свързани таблици)
(Като оправдание: Не е нещо уникално, в една руска среда за разработка на проложения с бази данни има подобни идеи, но за съжаление тази среда беше предложена 3-4 години, след като аз си разработих технологията)
Та до сега винаги в датамодула си създавах (в дизайнтайм) field за всяко поле, което ми трябва. Недостатъка е, че всеки път, когато възложител реши да промени нещо, което води до промяна на полета (дори само на размерът им:) на мен ми се налага да ходя из датасетите в датамодула и да сменям дефиниции на полета (в дизайнтайм).
Та преди време реших, че мога да не създавам полетата в дизайнтайм, а да ги създавам в рънтайм и да си ги манипулирам по същия начин. Да ама не :) - когато затворя датасета и таговете и имената се губят и всеки път като го отворя трябва да викам инициализиращите процедури.
И тъй като тези дни започвам нов проект, реших да обърна малко внимание на юнита си.
И тъй като не се справих самичък, реших да отнема от вашето време.
Решението с колоните може и да ме устрои, но не е по-добро, защото трябва да си имам за всеки DataSet по един грид, в който да си съхранявам необходимото ми инфо. По тази логика по-добре ще е да си направя допълнителен (например) List, в който да си създавам обекти с необходимата ми информация. Така обаче трябва да пренапиша доста от универсалните си юнити.
|
| |
|
|
|