C++ Builder - вопросы программирования

       

следующий день Сне обязательно завтра)



Листинг 5.3

. Функция обработки события OnActivate AnsiString stDay[7] = ("воскресенье","понедельник", "вторник", "среда", "четверг","пятница","суббота"}; AnsiString stMonth[12] = {"января","февраля","марта", "апреля","мая","июня","июля", "августа","сентября", "октября", "ноября","декабря"}; // активизация формы void _fastcall TForml::FormActivate(TObject *Sender) { TDateTime Today, // сегодня NextDay; // следующий день Сне обязательно завтра) Word Year, Month, Day; // год, месяц, день Today = Now ();
DecodeDate(Today, Year, Month, Day);
Labell->
Caption = "Сегодня " + IntToStr(Day) + " " + stMonth[Month-l] + " " + IntToStr(Year) + " года, " + stDay[DayOfWeek(Today) -1]; Label2->
Caption = "Сегодня и ближайшие дни"; // вычислим следующий день // если сегодня пятница, то, чтобы не забыть, // что запланировано на понедельник, считаем, что следующий * // день — понедельник switch ( DayOfWeek(Today)) { case 6 : NextDay = Today + 3; break; // сегодня пятница case 7 : NextDay = Today + 2; break; // сегодня суббота default : NextDay = Today + 1; break; } // запрос к базе данных: есть ли дела, запланированные // на сегодня и на следующий день Queryl->
SQL->
Strings[3] = "(Date_F >
= '"+ FormatDateTime("dd/mm/yyyy",Today)+"') AND " + "(Date_F<= '"+ FormatDateTime("dd/mm/yyyy",NextDay)+"')"; Queryl->
Open();
DataSourcel->
DataSet = Forml->
Queryl; if ( ! Queryl->
RecordCount) { ShowMessage("На сегодня и ближайшие дни никаких дел не запланировано.");
} }
Использование псевдонима для доступа к базе данных обеспечивает независимость программы от размещения данных в системе, позволяет размещать программу работы с данными и базу данных на разных дисках компьютера, в том числе и на сетевом. Вместе с тем для локальных баз данных типичным решением является размещение базы данных в отдельном подкаталоге того каталога, в котором находится программа работы с базой данных. Таким образом, программа работы с базой данных "знает", где находятся данные. При таком подходе можно отказаться от создания псевдонима при помощи Database Desktop и возложить задачу создания псевдонима на программу работы с базой данных. Очевидно, что такой подход облегчает администрирование базы данных.

В качестве иллюстрации сказанного в листинге 5.4 приведен вариант реализации функции OnActivate, которая создает псевдоним для базы данных organizer. Предполагается, что база данных находится в подкаталоге DATA того каталога, в котором находится выполняемый файл программы. Непосредственное создание псевдонима выполняет функция AddStandardAlias, которой в качестве параметра передается псевдоним и соответствующий ему каталог. Так как во время разработки программы нельзя знать, в каком каталоге будет размещена программа работы с базой данных и, следовательно, подкаталог базы данных, имя каталога определяется во время работы программы путем обращения к функциям Paramstrto) и ExtractFilePatch. Значение первой — полное имя выполняемого файла программы, второй — путь к этому файлу. Таким образом, процедуре AddStandardAlias передается полное имя каталога базы данных.

Содержание раздела