Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 19.10.2009, 17:32   #1
TaYgA
Форумчанин
 
Аватар для TaYgA
 
Регистрация: 24.09.2009
Сообщений: 264
По умолчанию разъяснение кода БД Ежедневника на Delphi

Всем доброго дня суток, нашёл исходник БД Ежедневника. Пару суток пытался разобраться что за что отвечает... В принципе большая часть программы понятна, не понятно две вещи:
1) Как сделать чтоб БД загружался не с пуском проекта, а при переходе на определённую форму?!?!
2) На локальном диске С при запуске проекта появляется файл PDOXUSRS.NET... За что он отвечает и как сделать чтоб он появлялся в катологе с самим проектом?!?!
Вот код БД Ежедневника:
Код:
var
  Form1: TForm1;

  stDay : array[1..7] of string[11] = ('воскресенье','понедельник','вторник',
                                       'среда','четверг','пятница','суббота');
  stMonth : array[1..12] of string[8] = ('января','февраля','марта',
                                          'апреля','мая','июня','июля',
                                          'августа','сентября','октября',
                                          'ноября','декабря');

implementation

{$R *.dfm}

uses DateUtils;

// сегодняшняя дата и день недели
procedure TForm1.FormActivate(Sender: TObject);
var
  Present: TDateTime;
  Year, Month, Day : Word;
 begin
  Present:= Now; // Now - функция, возвращает текущую дату и время
  DecodeDate(Present, Year, Month, Day);
  Label1.Caption := 'Сегодня ' + IntToStr(Day)+' '
    + StMonth[Month] + ' '+ IntToStr(Year)+' года, '+stDay[DayOfWeek(Present)]+'.';
  Form1.Label2.Caption := 'Сегодня и на ближайшие дни:';

end;

// щелчок на кнопке Сегодня
procedure TForm1.Button2Click(Sender: TObject);
var
    st : string; // критерий запроса
begin
    Form1.Label2.Caption := 'Сегодня';
    st:= FormatDateTime('dd/mm/yyyy',Now);
    Form1.Query1.SQL[3] := '(Data = '''+st+''')';
    Form1.Query1.Open;
    if form1.Query1.RecordCount <> 0 then
        form1.DataSource1.DataSet := Form1.Query1
    else begin
        ShowMessage('На сегодня ни каких дел не запланировано.');
        //form1.DataSource1.DataSet := Table1;
    end;
end;

// завтра
procedure TForm1.Button3Click(Sender: TObject);
var
  Present,              // сегодня
  Tomorrow: TDateTime;  // завтра

 begin
  Form1.Label2.Caption := 'Завтра';
  Present:= Now; // Now - функция, возвращает текущую дату и время
  Tomorrow := IncDay(Present);  // завтра

  Form1.Query1.SQL[3] :=
         '(Data = '''+ FormatDateTime('dd/mm/yyyy',Tomorrow)+''')';
  Form1.Query1.Open;
  if form1.Query1.RecordCount <> 0 then
        form1.DataSource1.DataSet := Form1.Query1
    else
        ShowMessage('На завтра ни каких дел не запланировано.');
end;

// на этой неделе
procedure TForm1.Button4Click(Sender: TObject);
var
  Present: TDateTime;
  EndOfWeek: TDateTime;

 begin
  Form1.Label2.Caption := 'На этой неделе';
  Present:= Now; // Now - функция, возвращает текущую дату и время
  EndOfWeek := StartOfAWeek(YearOf(Present),WeekOf(Present)+1);

  Form1.Query1.SQL[3] :=
         '(Data >= '''+ FormatDateTime('dd/mm/yyyy',Present)+''')' +  'and'+
         '(Data <  '''+ FormatDateTime('dd/mm/yyyy',EndOfWeek)+''')';
  Form1.Query1.Open;
  if form1.Query1.RecordCount <> 0 then
        form1.DataSource1.DataSet := Form1.Query1
    else
        ShowMessage('На эту неделю ни каких дел не запланировано.');
end;

// на следующей неделе
procedure TForm1.Button1Click(Sender: TObject);
var
  Present: TDateTime;
  d1, d2: TDateTime;

 begin
  Form1.Label2.Caption := 'На следующей неделе';
  Present:= Now; // Now - функция, возвращает текущую дату и время
  d1 := StartOfAWeek(YearOf(Present),WeekOf(Present)+1);
  d2 := StartOfAWeek(YearOf(Present),WeekOf(Present)+2);
  Form1.Query1.SQL[3] :=
         '(Data >= '''+ FormatDateTime('dd/mm/yyyy',d1)+''')' +  'and'+
         '(Data <  '''+ FormatDateTime('dd/mm/yyyy',d2)+''')';
  Form1.Query1.Open;
  if form1.Query1.RecordCount <> 0 then
        form1.DataSource1.DataSet := Form1.Query1
    else
        ShowMessage('На следующую неделю ни каких дел не запланировано.');
end;

// показать все записи
procedure TForm1.Button5Click(Sender: TObject);
begin
        Form1.Label2.Caption := 'Все, что намечено сделать';
        DataSource1.DataSet := Table1;
        Table1.Active := True;
      
end;


end.
TaYgA вне форума Ответить с цитированием
Старый 19.10.2009, 17:33   #2
TaYgA
Форумчанин
 
Аватар для TaYgA
 
Регистрация: 24.09.2009
Сообщений: 264
По умолчанию

Главная процедура приложения (View Source)
Код:
program org;
uses
  Forms,
  org_ in 'org_.pas' {Form1},
  SysUtils,Dialogs,
  DateUtils,  // для доступа к IncDay
  DBTables;   // для доступа к Session, AddStandardAlias

{$R *.res}

var
  Present: TDateTime;       // сегодня
  NextDay: TDateTime;       // следующий день
  Year, Month, Day : Word;  // год, месяц, день

  Query: TQuery; // запрос, обеспечивающий
                 // создание БД (таблицы)
begin
  Application.Initialize;
  Application.Title := 'Ежедневник';
  Application.CreateForm(TForm1, Form1);

 // создадим псевдоним
 with Session do
 begin
    ConfigMode := cmSession;
    AddStandardAlias('diary',   // псевдоним БД
                      ExtractFilePath(ParamStr(0)), // каталог
                     'PARADOX');
 end;

 // определим текущую дату
  Present:= Now; // Now - функция, возвращает текущую дату и время
  DecodeDate(Present, Year, Month, Day);

  case {dof} DayOfWeek(Present) of
    6:   NextDay := IncDay(Present,3);   // пятница
    7:   NextDay := IncDay(Present,2);   // суббта
    else NextDay := IncDay(Present,1)
  end;

  // запрос к базе данных: есть ли дела, запланированные
  // на сегодня и ближайшие дни
  Form1.Query1.SQL[3] :=
         '(Data >= '''+ FormatDateTime('dd/mm/yyyy',Present)+''')' +  'and'+
         '(Data <= '''+ FormatDateTime('dd/mm/yyyy',NextDay)+''')';

  try
    Form1.Query1.Open;  // выполнить запрос

  except
    on E:EDBEngineError do
        // Ошибка при выполнении запроса может
        // быть вызвана тем, что файла базы данных нет.
        // Предложить пользователю создать
        // файл базы данных.
        begin
            MessageDlg('Файл таблицы базы данных не найден .'+#13+
            'Таблица будет создана.',mtWarning,[mbYes],0);

            Query := TQuery.Create(Form1);
            with Query do
            begin
                // сформируем запрос, обеспечивающий
                // создание БД
                SQL.Add('CREATE TABLE diary (');
                SQL.Add('What CHAR(80),');
                SQL.Add('Data DATE);');

                ExecSQL;
            end;
            // таблица создана
            Form1.Query1.Open; // выполним запрос
        end;
  end;


  if Form1.Query1.RecordCount <> 0  // есть дела, запланированные на ближайшие дни
    then
        Form1.DataSource1.DataSet := Form1.Query1
    else
        begin
            Form1.DataSource1.DataSet := Form1.Table1;
            Form1.Table1.Open;
            ShowMessage('На сегодня и ближайшие дни' +
                        'ни каких дел не запланировано.');
        end;

  Application.Run;
end.
TaYgA вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Разяснения кода в delphi TaYgA Помощь студентам 5 03.10.2009 19:45
Структура кода в Delphi 7. Вадим Буренков Общие вопросы Delphi 8 15.03.2009 12:28
структура моей бд. Нужно разъяснение. Roof Microsoft Office Access 1 27.12.2008 18:23
Delphi. Редактор кода. BOBAH13 Общие вопросы Delphi 5 25.05.2008 00:20
Трансляция кода из Delphi в C phobos Помощь студентам 9 21.04.2007 18:26