|
Дата обновления DBF- таблицы в заголовке
|
|||
---|---|---|---|
#18+
Доброго времени суток, коллеги. Интересует вопрос следующего плана: Из программы формируются отчеты. Отчеты в формате DBF. Необходимо, чтобы через неделю, когда делается "пересчет" этих отчетов, dbf-таблицы были полностью идентичны, и при сравнении с предыдущими отчетами разницы не было. В DBF таблице в заголовке есть дата создания/обновления таблицы. Существуют ли какие- нибудь функции, SET- команды для того, чтобы в заголовке DBF таблицы автоматически дата не заполнялась, либо заполнять ее другим значением. Можно вручную заменять байты, но есть ли еще варианты? Спасибо. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.11.2012, 16:27 |
|
Дата обновления DBF- таблицы в заголовке
|
|||
---|---|---|---|
#18+
SET`ов нет. Но вручную можно что угодно наделать. DBF это файл - открывай любым HEX-редактором и правь. Дату создания тоже не сложно поменять. Можно фоксом править с помощью функций работы с файлами fopen(), fread(), fwrite(). Если хочешь быть уверен что файл не менялся - считай хэш (MD5 например) в момент формирования отчета и храни где-нибудь в недоступном месте. В простейшем случае можно CRC32 считать: Код: sql 1.
CRC32 - это контрольная сумма (32 бита), ее при желании можно подогнать, но это не так уж и просто и быстро сделать. MD5 замучаешься подгонять (128 бит). Для MD5 встроенных средств нет. Выбирай любое какое понравится Можешь ЭЦП прикрутить, подписывать попавшие в отчеты файлы, а потом просто проверять подпись при повторном использовании. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.11.2012, 16:58 |
|
Дата обновления DBF- таблицы в заголовке
|
|||
---|---|---|---|
#18+
В том то и дело, что CRC32 или тот же самый хэш файла dbf, сформированного вчера не будет равен файлу, сформированному по тем же данным сегодня, т.к. в заголовке таблицы имеется дата создания/изменения, и она будет отличаться. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.11.2012, 17:21 |
|
Дата обновления DBF- таблицы в заголовке
|
|||
---|---|---|---|
#18+
askkasНеобходимо, чтобы через неделю , когда делается "пересчет" этих отчетов, dbf-таблицы были полностью идентичны , и при сравнении с предыдущими отчетами разницы не было.Что это значит? А как туда новые данные заносить? ... |
|||
:
Нравится:
Не нравится:
|
|||
29.11.2012, 18:41 |
|
Дата обновления DBF- таблицы в заголовке
|
|||
---|---|---|---|
#18+
askkasВ том то и дело, что CRC32 или тот же самый хэш файла dbf, сформированного вчера не будет равен файлу, сформированному по тем же данным сегодня, т.к. в заголовке таблицы имеется дата создания/изменения, и она будет отличаться. С этого и надо начинать что файлы извне берутся. Тогда по другому. Не считай заголовок. Считай CRC только данных. HEADER() возвращает размер заголовка DBF. Код: sql 1. 2. 3. 4. 5. 6.
Если там порядок записей может сменится, или помеченные на удаление, то считать CRC только полезных данных так: 1. считаем CRC каждой записи и пишем в курсор (sys(2007) от всех полей сложенных в строку) 2. сортируем курсор по возрастанию 3. складываем все CRC в одну строку и считаем от нее CRC. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.11.2012, 18:57 |
|
Дата обновления DBF- таблицы в заголовке
|
|||
---|---|---|---|
#18+
Спасибо Всем! Подходит вариант FOPEN+FSEEK+FWRITE !! ... |
|||
:
Нравится:
Не нравится:
|
|||
30.11.2012, 15:35 |
|
Дата обновления DBF- таблицы в заголовке
|
|||
---|---|---|---|
#18+
askkasДоброго времени суток, коллеги. Интересует вопрос следующего плана: Из программы формируются отчеты. Отчеты в формате DBF. Необходимо, чтобы через неделю, когда делается "пересчет" этих отчетов, dbf-таблицы были полностью идентичны, и при сравнении с предыдущими отчетами разницы не было. В DBF таблице в заголовке есть дата создания/обновления таблицы. Существуют ли какие- нибудь функции, SET- команды для того, чтобы в заголовке DBF таблицы автоматически дата не заполнялась, либо заполнять ее другим значением. Можно вручную заменять байты, но есть ли еще варианты? Спасибо. А это не маразм здесь написан, ничё, да ? Я имел в виду "когда делается "пересчет" этих отчетов, dbf-таблицы были полностью идентичны, и при сравнении с предыдущими отчетами разницы не было". А и на кой тогда вообще эти "DBF-таблицы" (в простонародье называются просто таблицами) изменять ? Они кому должны быть "идентичны" ? Самим себе или куда ? Вот в который раз безуспешно пытаюсь добиться от вопрошающих - ну, разберитесь с русским языком и внятно опишите проблему. Фигвам, в результате видишь "Необходимо, чтобы через неделю, когда делается "пересчет" этих отчетов, dbf-таблицы были полностью идентичны, и при сравнении с предыдущими отчетами разницы не было.". Ну будут тебе таблицы идентичны (а что имеется в виду под "идентичны" ?), будут и отчёты идентичны. Нормально in Russian ты ду ю спик, ор нот ? ... |
|||
:
Нравится:
Не нравится:
|
|||
30.11.2012, 17:37 |
|
|
start [/forum/topic.php?fid=41&fpage=48&tid=1583292]: |
0ms |
get settings: |
10ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
37ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
43ms |
get tp. blocked users: |
1ms |
others: | 13ms |
total: | 140ms |
0 / 0 |