C++ Builder
| Главная | Уроки | Статьи | FAQ | Форум | Downloads | Литература | Ссылки | RXLib | Диски |

 
Как узнать?
SASH
  Отправлено: 26.11.2003, 09:59


Дежурный стрелочник

Группа: Участник
Сообщений: 58



Есть dbf файлы, которые находятся на серверах в определенных папках.
Ежемесячно эти dbf файлы обновляются.

Как узнать обновились — ли файлы (т. е. вывести какое — то сообщение в программе, что файлы обновлены) и если обновились, то скопировать их к себе?

Admin
Отправлено: 26.11.2003, 10:49


Владимир

Группа: Администратор
Сообщений: 1190



Может проверять дату, если файл .dbf пересоздается, например,
с помощью FileAge() или FileGetDate()

Если это не годится,
то лучше заведите в базе таблицу с полем типа Дата-Время
и записывайте при обновлении в него дату-время
последнего обновления.
(можно несколько полей  — для каждой таблицы своё:

CODE

Таблица             Дата последнего обновления
---                       ---
tblDepartment    12.10.2003 12:10
tblOrder              27.11.2003 17:24
tblPrice               28.11.2003 15:10
...)

Соответственно и проверяйте это поле. (эти поля)
Тогда, если какие-то таблицы не обновлялись,
можно их к себе не копировать, а копировать
только обновившиеся.

Или заведите файл на сервере и записывайте в него
дату последнего обновления.

Отредактировано Admin — 26/11/2003, 11:52
SASH
Отправлено: 27.11.2003, 07:02


Дежурный стрелочник

Группа: Участник
Сообщений: 58



FileAge(), FileGetDate() — подскажите пожалуйста, а как они работают?
** pasha
Отправлено: 27.11.2003, 09:55


Не зарегистрирован







FileAge() — возвращает дату создания файла или -1 если
такого файла нет.

CODE

void __fastcall TForm1::Button1Click(TObject *Sender)
{
  TDateTime dt;
  if(OpenDialog1->Execute()){
    int n = FileAge(OpenDialog1->FileName);
    dt = FileDateToDateTime(n);
    ShowMessage(DateTimeToStr(dt));
    }
}
** pasha
Отправлено: 27.11.2003, 10:08


Не зарегистрирован







FileGetDate() аналогичная, но работает через Handle:

CODE

void __fastcall TForm1::Button1Click(TObject *Sender)
{
  TDateTime dt;
  if(OpenDialog1->Execute()){
    int iH = FileOpen(OpenDialog1->FileName, fmOpenRead);
    int n = FileGetDate(iH);
    dt = FileDateToDateTime(n);
    ShowMessage(DateTimeToStr(dt));
    FileClose(iH);
    }
}





Вернуться в Работа с базами данных в C++Builder