Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Примеры и задачи.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
3.66 Mб
Скачать

Implementation

{$R *.dfm}

1

226

Часть Щ

Примеры и задачи

227

'+#13+

// запланированные на ближайшие дни

ИИ*

uses

Forms,

org_ in 'org_.pas' (Forml),

SysUtils,Dialogs,

Datelltils, // для доступа к IncDay

DBTables; // для доступа к Session, AddStandardAlias

{$R *.res}

var

Present: TDateTime; // сегодня

NextDay: TDateTime; // следующий день

Year, Month, Day : Word; // год, месяц, день

Query: TQuery; // запрос, обеспечивающий

// создание БД (таблицы) begin

Application.Initialize; Application.Title := 'Ежедневник'; Application.CreateForm(TForml, Forml);

{ Псевдоним для доступа к базе данных создается во время запуска программы и существует только во время работы программы.

База данных находится в том же каталоге, что и выполняемый файл программы. Имя каталога, в котором находится выполняемый файл, можно получить обратившись к функции ParamStr. }

// создадим псевдоним with Session do begin

ConfigMode := cmSession;

AddStandardAlias('diary', // псевдоним БД

ExtractFilePath(ParamStr(0)), // каталог 'PARADOX'); end;

// определим текущую дату Present:= Now; // Now — функция, возвращает текущую дату

// и время DecodeDate(Present, Year, Month, Day);

case {dot} DayOfWeek(Present) of 6: NextDay := IncDay(Present, 3) ; 7: NextDay := IncDay(Present,2) ; else NextDay := IncDay(Present,1)

end;

запланированные

// запрос к базе данных: есть ли дела, // на сегодня и ближайшие дни Forml.QueryI.SQL[3] :=

1(Data >= ' ' ' + FormatDateTime('dd/mm/yyyy',Present)+''')' + 'and'+

'(Data <= '''+ FormatDateTime('dd/mm/yyyy',NextDay)+'

try

Forml.Queryl.Open;

except

on E:EDBEngineError do

// Ошибка при выполнении запроса может

// быть вызвана тем, что файла базы данных нет.

// Предложить пользователю создать

// файл базы данных.

begin

MessageDlg('Файл таблицы базы данных не найден 'Таблица будет создана.',mtWarning,[mbYes],0);

Query := TQuerу.Create(Forml);

with Query do

begin

// сформируем запрос, обеспечивающий

// создание БД

SQL.Add('CREATE TABLE diary (');

SQL.Add('What CHAR(80),');

SQL.Add('Data DATE);');

ExecSQL; end;

// таблица создана

Forml.Queryl.Open; // выполним запрос

end;

end;

if Forml.Queryl.RecordCount <> 0 // есть дела,

// пятница // суббота

// выполнить запрос

228

Часть

Примеры и задачи

229

then

Forml.DataSourcel.DataSet := Forml.Queryl

else

begin

Forml.DataSourcel.DataSet := Forml.Tablel;

Forml.Tablel.Open;

ShowMessage('На сегодня и ближайшие дни1 +

'никаких дел не запланировано.'); end;

Application.Run; end.

unit org_; // модуль формы

I

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

на сегодня. Если что-то намечено, то на экране появляется окно

Ежедневник.

Запрос к базе данных в начале работы программы формирует главная процедура приложения. Чтобы ее увидеть,

выберите из меню Project команду View Source. 1