powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Дата обновления DBF- таблицы в заголовке
7 сообщений из 7, страница 1 из 1
Дата обновления DBF- таблицы в заголовке
    #38058372
askkas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Доброго времени суток, коллеги. Интересует вопрос следующего плана:
Из программы формируются отчеты. Отчеты в формате DBF. Необходимо, чтобы через неделю, когда делается "пересчет" этих отчетов, dbf-таблицы были полностью идентичны, и при сравнении с предыдущими отчетами разницы не было.

В DBF таблице в заголовке есть дата создания/обновления таблицы. Существуют ли какие- нибудь функции, SET- команды для того, чтобы в заголовке DBF таблицы автоматически дата не заполнялась, либо заполнять ее другим значением. Можно вручную заменять байты, но есть ли еще варианты?

Спасибо.
...
Рейтинг: 0 / 0
Дата обновления DBF- таблицы в заголовке
    #38058463
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SET`ов нет. Но вручную можно что угодно наделать. DBF это файл - открывай любым HEX-редактором и правь. Дату создания тоже не сложно поменять. Можно фоксом править с помощью функций работы с файлами fopen(), fread(), fwrite().

Если хочешь быть уверен что файл не менялся - считай хэш (MD5 например) в момент формирования отчета и храни где-нибудь в недоступном месте.
В простейшем случае можно CRC32 считать:
Код: sql
1.
? sys(2007, FileToStr('c:\MyFile.dbf'), 0, 1)


CRC32 - это контрольная сумма (32 бита), ее при желании можно подогнать, но это не так уж и просто и быстро сделать. MD5 замучаешься подгонять (128 бит).
Для MD5 встроенных средств нет. Выбирай любое какое понравится

Можешь ЭЦП прикрутить, подписывать попавшие в отчеты файлы, а потом просто проверять подпись при повторном использовании.
...
Рейтинг: 0 / 0
Дата обновления DBF- таблицы в заголовке
    #38058544
askkas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В том то и дело, что CRC32 или тот же самый хэш файла dbf, сформированного вчера не будет равен файлу, сформированному по тем же данным сегодня, т.к. в заголовке таблицы имеется дата создания/изменения, и она будет отличаться.
...
Рейтинг: 0 / 0
Дата обновления DBF- таблицы в заголовке
    #38058761
Jonny540
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
askkasНеобходимо, чтобы через неделю , когда делается "пересчет" этих отчетов, dbf-таблицы были полностью идентичны , и при сравнении с предыдущими отчетами разницы не было.Что это значит? А как туда новые данные заносить?
...
Рейтинг: 0 / 0
Дата обновления DBF- таблицы в заголовке
    #38058790
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
askkasВ том то и дело, что CRC32 или тот же самый хэш файла dbf, сформированного вчера не будет равен файлу, сформированному по тем же данным сегодня, т.к. в заголовке таблицы имеется дата создания/изменения, и она будет отличаться.
С этого и надо начинать что файлы извне берутся. Тогда по другому. Не считай заголовок. Считай CRC только данных. HEADER() возвращает размер заголовка DBF.
Код: sql
1.
2.
3.
4.
5.
6.
lcDbf = 'c:\MyFile.dbf'
sele 0
use (lcDbf)
lnHead = header()
use
? sys(2007, FileToStr(lcDbf), lnHead, 1)



Если там порядок записей может сменится, или помеченные на удаление, то считать CRC только полезных данных так:
1. считаем CRC каждой записи и пишем в курсор (sys(2007) от всех полей сложенных в строку)
2. сортируем курсор по возрастанию
3. складываем все CRC в одну строку и считаем от нее CRC.
...
Рейтинг: 0 / 0
Дата обновления DBF- таблицы в заголовке
    #38059959
askkas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо Всем! Подходит вариант FOPEN+FSEEK+FWRITE !!
...
Рейтинг: 0 / 0
Дата обновления DBF- таблицы в заголовке
    #38060300
reware
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
askkasДоброго времени суток, коллеги. Интересует вопрос следующего плана:
Из программы формируются отчеты. Отчеты в формате DBF. Необходимо, чтобы через неделю, когда делается "пересчет" этих отчетов, dbf-таблицы были полностью идентичны, и при сравнении с предыдущими отчетами разницы не было.
В DBF таблице в заголовке есть дата создания/обновления таблицы. Существуют ли какие- нибудь функции, SET- команды для того, чтобы в заголовке DBF таблицы автоматически дата не заполнялась, либо заполнять ее другим значением. Можно вручную заменять байты, но есть ли еще варианты?
Спасибо.
А это не маразм здесь написан, ничё, да ? Я имел в виду "когда делается "пересчет" этих отчетов, dbf-таблицы были полностью идентичны, и при сравнении с предыдущими отчетами разницы не было". А и на кой тогда вообще эти "DBF-таблицы" (в простонародье называются просто таблицами) изменять ? Они кому должны быть "идентичны" ? Самим себе или куда ? Вот в который раз безуспешно пытаюсь добиться от вопрошающих - ну, разберитесь с русским языком и внятно опишите проблему. Фигвам, в результате видишь "Необходимо, чтобы через неделю, когда делается "пересчет" этих отчетов, dbf-таблицы были полностью идентичны, и при сравнении с предыдущими отчетами разницы не было.". Ну будут тебе таблицы идентичны (а что имеется в виду под "идентичны" ?), будут и отчёты идентичны. Нормально in Russian ты ду ю спик, ор нот ?
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Дата обновления DBF- таблицы в заголовке
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]