Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.11.19;
Скачать: CL | DM;

Вниз

Вопрос по проектированию класса   Найти похожие ветки 

 
Megabyte ©   (2006-10-30 10:09) [0]

Создаю класс, который будет:
1) Делать выборку из БД;
2) Формировать отчет в excel;
3) Отправлять отчет на e-mail.

Соответственно, делаю 3 метода:
1) Выборка и получение Датасета;
2) Получение Excel-отчета;
3) Отправление письма с приаттаченным файлом.

Создаю компоненты работы с БД в 1-м методе, там же хочу их уничтожить. Надо как-то передать набор данных в следующий метод(через результат 1-го метода, кот. является функцией). Вопрос: каким образом передать именно набор данных, а не ссылку на класс TpFIBDataSet? Пока объявил тип функции как TpFIBDataSet, но, как я понимаю, при выходе из 1-го метода(уничтожение компонентов работы с БД) ссылка будет неверной.
Можно, конечно, формировать отчет в Excel"е в том же методе, но хочется вынести это в отдельный метод.
Либо можно сделать компоненты работы с БД глобальными и уничтожать после формирования отчета, но это, по-моему, не есть гуд.
Я так понимаю, мне надо использовать клиентский набор данных?


 
StriderMan ©   (2006-10-30 11:21) [1]


> ..там же хочу их уничтожить..

зачем уничтожать если передавать собрался?

если уж визуально не катит все делать, сделай компоненты доступа в private своего класса. Создавай в конструктор, разрушай в деструкторе.

> Вопрос: каким образом передать именно набор данных

экземпляры классов в Делфи передаются только указателями. Где ты его создал - неважно, важно чтобы он был создан, а потом разрушен.


 
Megabyte ©   (2006-10-30 13:08) [2]

Точно. Что-то я про конструктор с деструктором забыл. %)


 
Рамиль ©   (2006-10-30 14:14) [3]

Надо стараться, что бы порядок вызова методов не влиял на работу класса, это признак плохого проектирования.
может лучше один public метод, а в private три метода, если так удобно?


 
Megabyte ©   (2006-10-30 17:51) [4]


> Надо стараться, что бы порядок вызова методов не влиял на работу класса

Это понятно. Просто 2-й метод(получение отчета в Excel) не мыслим без 1-го метода(получение НД).
Но я специально их разделил, чтобы в будущем можно было провести, если потребуется, какие-то доп. действия с НД.
Методы объявлены как protected и являются функциями. А доступ к ним(запуск метода) идет через public-свойства, т.е. у меня есть свойство OtchetDataSet и AttachFile(файл excel, кот. будет прикрепляться к письму).


 
Reindeer Moss Eater ©   (2006-10-30 17:55) [5]

Надо как-то передать набор данных в следующий метод(через результат 1-го метода, кот. является функцией).

А что, датасет этот не является членом класса?
Зачем его куда-то передавать?

И вообще зачем здесь класс, если процедурного подхода здесь за глаза и за уши?



Страницы: 1 вся ветка

Текущий архив: 2006.11.19;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.03 c
2-1162501134
dRake
2006-11-02 23:58
2006.11.19
Пара вопросов (+)


15-1162547532
Stanislav1
2006-11-03 12:52
2006.11.19
WinAPI программист


15-1162272915
pusrg
2006-10-31 08:35
2006.11.19
Проблема с воспроизведением видеофайла


5-1143100549
Vopros
2006-03-23 10:55
2006.11.19
цвет строки и разделительных линий TStringGrid


1-1160412630
Gbp
2006-10-09 20:50
2006.11.19
Замена CodeWarp для Delphi 2006