Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2006.11.19;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.107 c
15-1162546905
Руслан
2006-11-03 12:41
2006.11.19
Нужна картинка студента


1-1160027786
laronov
2006-10-05 09:56
2006.11.19
DBGrid с Memo


15-1162368065
Slider007
2006-11-01 11:01
2006.11.19
Чисто человеческий вопрос. Автошкола.


15-1162358253
Pazitron_Brain
2006-11-01 08:17
2006.11.19
Power Shell


5-1143640846
Gaval
2006-03-29 18:00
2006.11.19
fastreport





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский