Просмотр журнала
Модераторы: m0p3e, edward_K, Модераторы
-
- Местный житель
- Сообщения: 783
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: Москва
- Контактная информация:
Re: Просмотр журнала
Данные лежат, как оказалось, по самому простому принципу. Допустим таблица состоит из 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...
Кто знает, как вытаскивать данные и работать с мемо-полями, откликнитесь.
У меня не получилось (знаний маловато) получить LOT-файлом, например, 1-е два байта мемо-поля - я использовал функцию SubStr...
Кто знает, как вытаскивать данные и работать с мемо-полями, откликнитесь.
Re: Просмотр журнала
Когда-то давно я делала отчет по журналу... Это было еще по 5.2. Не знаю, точно, поменялась что-либо или нет, но исходники высылаю. Может там есть что-нибудь полезное. Лови
-
- Местный житель
- Сообщения: 783
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: Москва
- Контактная информация:
Re: Просмотр журнала
Большое спасибо, Ольга! ) Интересные конструкции ))
Re: Просмотр журнала
Ольга, а мне можно?
Re: Просмотр журнала
И мне.
Подход к делу: СДЕЛАЛ и ... ЗАБЫЛ, а ОНО пусть САМО работает (не люблю возвращаться и повторяться).
Re: Просмотр журнала
И мне...
m0p3e@hotbox.ru
m0p3e@hotbox.ru
Re: Просмотр журнала
И мне, плз
alphiya@bk.ru
alphiya@bk.ru
Re: Просмотр журнала
Всем отправила, ловите...
Re: Просмотр журнала
Ольга! И мне, pls!
hope@sitno.mgn.ru
hope@sitno.mgn.ru
-
- Местный житель
- Сообщения: 278
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: Москва
- Контактная информация:
Re: Просмотр журнала
Оленька, тогда и мне, если не сложно
-
- Постоянный гость
- Сообщения: 89
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: Казахсктан Аксуский завод ферросплавов
- Контактная информация:
Re: Просмотр журнала
Хм... ИМХО, ни чего страшного в том МЕМО нет, Галактисты, скорее всего валят в то МЕМО целиком буфер данных Btrieve, отпарсить его и привести в удобоваримый вид проще простого (глядишь в X$File, X$Field, получаешь типы полей, их смещения и размер в байтах, разбиваешь строку в соответствии с этими данными и выполняешь приведение типов в соответствии с типами полей в словаре). Правда надо учитывать что структура МЕМО поля:
TMemo = packed record
BufLen: DWORD или Longint; {!!!! У Btrieve Word!!!!}
Buffer: array of Char;
end;
TMemo = packed record
BufLen: DWORD или Longint; {!!!! У Btrieve Word!!!!}
Buffer: array of Char;
end;
-
- Местный житель
- Сообщения: 645
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: г.Королев МО ООО "Эффективная Комплексная Автоматизация- СОФТ"
Re: Просмотр журнала
Занимался пару лет назад. В основном из-за того, что в журнализацию попадает куча мусора и надо выбрасывать его из просмотра.
И нужет был не отчет по таблицам, а отчет по связанным документам. Ну надо было вывести какие Накладные (со специцикацией) когда и кто правил, удалял и т.д. Отчет типа такого
Отчет по изменениям с... по...
20.01.03
Иванов
- исправлена позиция накладной 34 от 20 03 04, исправлено количество товара c 6 на 7.
Нетрудно разработать свой интерфейс работы с журналом. Отчет очень простой - это отчет по таблице x$journal. По имени таблицы можно получить код таблицы через x$files, а по коду получить записи из x$Journal. К сожалению индексы очень бедные, поэтому при большом количестве записей работает не очень быстро. Был разработан такой подход - периодически (например за месяц) изменяли каталог для хранения журнала в словаре. А поиск записей по журналу шел уже по нескольким таблицам журнализации (динамическое переключение по таблице журнализации в отчете).
Исходные коды, к сожалению, остались у пользователя, т.к. мы, как партнер, просто помогаем быстренько сделать заготовку, а дописывет пользователь под нашим руководством уже сам. Поэтому кода у меня нет. Но там так все просто - вывести записи из одной таблицы..Единственно надо внимательно посмотреть как работать с мемо-полями журнала в ВИПе по документации.
С уважением, Игорь
И нужет был не отчет по таблицам, а отчет по связанным документам. Ну надо было вывести какие Накладные (со специцикацией) когда и кто правил, удалял и т.д. Отчет типа такого
Отчет по изменениям с... по...
20.01.03
Иванов
- исправлена позиция накладной 34 от 20 03 04, исправлено количество товара c 6 на 7.
Нетрудно разработать свой интерфейс работы с журналом. Отчет очень простой - это отчет по таблице x$journal. По имени таблицы можно получить код таблицы через x$files, а по коду получить записи из x$Journal. К сожалению индексы очень бедные, поэтому при большом количестве записей работает не очень быстро. Был разработан такой подход - периодически (например за месяц) изменяли каталог для хранения журнала в словаре. А поиск записей по журналу шел уже по нескольким таблицам журнализации (динамическое переключение по таблице журнализации в отчете).
Исходные коды, к сожалению, остались у пользователя, т.к. мы, как партнер, просто помогаем быстренько сделать заготовку, а дописывет пользователь под нашим руководством уже сам. Поэтому кода у меня нет. Но там так все просто - вывести записи из одной таблицы..Единственно надо внимательно посмотреть как работать с мемо-полями журнала в ВИПе по документации.
С уважением, Игорь
Некоммерческое общение в форуме
-
- Местный житель
- Сообщения: 645
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: г.Королев МО ООО "Эффективная Комплексная Автоматизация- СОФТ"
Re: Просмотр журнала
Деинис..
НЕ понял почему ТАЙНА ПОКРЫТАЯ МРАКОМ??? В мемо хранится старая и новая запись просто и все...или старая для удаленного. Смещения в БД записаны в таблице x$Fields. Зная смещения можно легко получить людое поле.
Все написано в документации по функциям работы с мемо-полями... Никаких проблем нет достать любое поле из журнала используя эти функции. Если запись существует сейчас, то достаешь сразу Nrec и подвязываешь к существующему полю.
Тут писали, что как искать по сумме..до никаких проблем - получаешь сумму из мемо-поля и сравниваешь с искомой.
Также писали, что интерфейс для каждой таблицы разный...тоже не так, так как можно вводить с экрана выбор их x$files (имена таблиц) и в программе по полученному коду давать отчет по выбранной таблице или множеству связанных таблиц.
С уважением, Игорь
НЕ понял почему ТАЙНА ПОКРЫТАЯ МРАКОМ??? В мемо хранится старая и новая запись просто и все...или старая для удаленного. Смещения в БД записаны в таблице x$Fields. Зная смещения можно легко получить людое поле.
Все написано в документации по функциям работы с мемо-полями... Никаких проблем нет достать любое поле из журнала используя эти функции. Если запись существует сейчас, то достаешь сразу Nrec и подвязываешь к существующему полю.
Тут писали, что как искать по сумме..до никаких проблем - получаешь сумму из мемо-поля и сравниваешь с искомой.
Также писали, что интерфейс для каждой таблицы разный...тоже не так, так как можно вводить с экрана выбор их x$files (имена таблиц) и в программе по полученному коду давать отчет по выбранной таблице или множеству связанных таблиц.
С уважением, Игорь
Некоммерческое общение в форуме
-
- Местный житель
- Сообщения: 783
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: Москва
- Контактная информация:
Re: Просмотр журнала
В сообщении от 17.02.03 - я уже написал, что понял принцип, по которому журнальная инфа хранится в мемо-полях. До этого для меня это действительно оставалось ТАЙНОЙ, ПОКРЫТОЙ МРАКОМ, а Вас, Игорь, рядом не было, чтобы спросить.
Правда не смог вытащить информацию из memo-поля с помощью LoT-файла. Опять же - я написал, что не хватило знаний. Ну не смог я написать LoT, который бы вытянул какое-либо читаемое (да и просто, даже не читаемое) значение из memo-поля. Не заработали эти самые функции работы с memo-полями. Выводится "пустота".
Возможно LoT-ом этого сделать и нельзя в принципе. А до своего фейса пока руки не доходят.
Правда не смог вытащить информацию из memo-поля с помощью LoT-файла. Опять же - я написал, что не хватило знаний. Ну не смог я написать LoT, который бы вытянул какое-либо читаемое (да и просто, даже не читаемое) значение из memo-поля. Не заработали эти самые функции работы с memo-полями. Выводится "пустота".
Возможно LoT-ом этого сделать и нельзя в принципе. А до своего фейса пока руки не доходят.