Главная страница
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.047 c
3-1158320717
Juice
2006-09-15 15:45
2006.11.19
Медленно работает CDS


6-1151396205
val07
2006-06-27 12:16
2006.11.19
Загрузка данных с HTML


2-1162464612
dmdel
2006-11-02 13:50
2006.11.19
вертикальные заголовки в StringGride


3-1158676994
alehan
2006-09-19 18:43
2006.11.19
TIntegerField.EditMask


3-1158651489
term1t
2006-09-19 11:38
2006.11.19
Comand is missing required clause