Страница 2 из 3

Re: Просмотр журнала

Добавлено: 17 фев 2003, 12:25
Deinis
Данные лежат, как оказалось, по самому простому принципу. Допустим таблица состоит из 4-х полей. 1-е поле занимает 8 байт, 2-е 5 байт, 3-е 4 байта, 4-е 2 байта. Тогда мемо-поле получится длиной 8+5+4+2 +1 = 20 байтов. Насчет последнего байта - не уверен, но по-моему он есть. Последовательность полей и их длина - в описании таблиц (Support-SQL-Поля таблицы). Это можно проверить, выгрузив мемо-поле (встав на него и нажав F5) во внешний файл (.txt) и с помощью любого hex-редактора (Hview, VCb и т.д.)просмотреть его.
У меня не получилось :( (знаний маловато) получить LOT-файлом, например, 1-е два байта мемо-поля - я использовал функцию SubStr...

Кто знает, как вытаскивать данные и работать с мемо-полями, откликнитесь.

Re: Просмотр журнала

Добавлено: 17 фев 2003, 14:44
Ольга
Когда-то давно я делала отчет по журналу... Это было еще по 5.2. Не знаю, точно, поменялась что-либо или нет, но исходники высылаю. Может там есть что-нибудь полезное. Лови

Re: Просмотр журнала

Добавлено: 19 фев 2003, 16:06
Deinis
Большое спасибо, Ольга! :)) Интересные конструкции :)))

Re: Просмотр журнала

Добавлено: 19 фев 2003, 23:45
Forsit_
Ольга, а мне можно?

Re: Просмотр журнала

Добавлено: 20 фев 2003, 12:05
Grom
И мне.

Re: Просмотр журнала

Добавлено: 20 фев 2003, 12:20
m0p3e
И мне... :)
m0p3e@hotbox.ru

Re: Просмотр журнала

Добавлено: 20 фев 2003, 12:27
alphia
И мне, плз
alphiya@bk.ru

Re: Просмотр журнала

Добавлено: 20 фев 2003, 12:29
Ольга
Всем отправила, ловите...

Re: Просмотр журнала

Добавлено: 20 фев 2003, 14:19
hope
Ольга! И мне, pls!
hope@sitno.mgn.ru

Re: Просмотр журнала

Добавлено: 25 фев 2003, 12:16
ALEKS123
Оленька, тогда и мне, если не сложно

Re: Просмотр журнала

Добавлено: 21 май 2003, 07:48
IgorA
Я конечно опоздал на 3 месяца,
но может кто пошлет и мне.

khmz@mail.kts.ru

Re: Просмотр журнала

Добавлено: 21 май 2003, 09:36
DarkGreen
Хм... ИМХО, ни чего страшного в том МЕМО нет, Галактисты, скорее всего валят в то МЕМО целиком буфер данных Btrieve, отпарсить его и привести в удобоваримый вид проще простого (глядишь в X$File, X$Field, получаешь типы полей, их смещения и размер в байтах, разбиваешь строку в соответствии с этими данными и выполняешь приведение типов в соответствии с типами полей в словаре). Правда надо учитывать что структура МЕМО поля:
TMemo = packed record
BufLen: DWORD или Longint; {!!!! У Btrieve Word!!!!}
Buffer: array of Char;
end;

Re: Просмотр журнала

Добавлено: 21 май 2003, 12:24
ecasoft
Занимался пару лет назад. В основном из-за того, что в журнализацию попадает куча мусора и надо выбрасывать его из просмотра.
И нужет был не отчет по таблицам, а отчет по связанным документам. Ну надо было вывести какие Накладные (со специцикацией) когда и кто правил, удалял и т.д. Отчет типа такого

Отчет по изменениям с... по...

20.01.03

Иванов
- исправлена позиция накладной 34 от 20 03 04, исправлено количество товара c 6 на 7.

Нетрудно разработать свой интерфейс работы с журналом. Отчет очень простой - это отчет по таблице x$journal. По имени таблицы можно получить код таблицы через x$files, а по коду получить записи из x$Journal. К сожалению индексы очень бедные, поэтому при большом количестве записей работает не очень быстро. Был разработан такой подход - периодически (например за месяц) изменяли каталог для хранения журнала в словаре. А поиск записей по журналу шел уже по нескольким таблицам журнализации (динамическое переключение по таблице журнализации в отчете).

Исходные коды, к сожалению, остались у пользователя, т.к. мы, как партнер, просто помогаем быстренько сделать заготовку, а дописывет пользователь под нашим руководством уже сам. Поэтому кода у меня нет. Но там так все просто - вывести записи из одной таблицы..Единственно надо внимательно посмотреть как работать с мемо-полями журнала в ВИПе по документации.

С уважением, Игорь

Re: Просмотр журнала

Добавлено: 21 май 2003, 12:34
ecasoft
Деинис..

НЕ понял почему ТАЙНА ПОКРЫТАЯ МРАКОМ??? В мемо хранится старая и новая запись просто и все...или старая для удаленного. Смещения в БД записаны в таблице x$Fields. Зная смещения можно легко получить людое поле.
Все написано в документации по функциям работы с мемо-полями... Никаких проблем нет достать любое поле из журнала используя эти функции. Если запись существует сейчас, то достаешь сразу Nrec и подвязываешь к существующему полю.

Тут писали, что как искать по сумме..до никаких проблем - получаешь сумму из мемо-поля и сравниваешь с искомой.

Также писали, что интерфейс для каждой таблицы разный...тоже не так, так как можно вводить с экрана выбор их x$files (имена таблиц) и в программе по полученному коду давать отчет по выбранной таблице или множеству связанных таблиц.

С уважением, Игорь

Re: Просмотр журнала

Добавлено: 21 май 2003, 12:56
Deinis
В сообщении от 17.02.03 - я уже написал, что понял принцип, по которому журнальная инфа хранится в мемо-полях. До этого для меня это действительно оставалось ТАЙНОЙ, ПОКРЫТОЙ МРАКОМ, а Вас, Игорь, рядом не было, чтобы спросить. ;)
Правда не смог вытащить информацию из memo-поля с помощью LoT-файла. Опять же - я написал, что не хватило знаний. Ну не смог я написать LoT, который бы вытянул какое-либо читаемое (да и просто, даже не читаемое) значение из memo-поля. Не заработали эти самые функции работы с memo-полями. Выводится "пустота".
Возможно LoT-ом этого сделать и нельзя в принципе. А до своего фейса пока руки не доходят.