Btrieve: проблема BUILD после APPEND

Clarion, Clarion 7

Модератор: Дед Пахом

Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
Ответить
Гость

Сообщение Гость »

Как следует из документации, драйвер Btrieve эмулирует работу append путем удаления ключей.
Оператор build(file), выполненный после цикла добавления по append и до закрытия файла, должен заново построить ключи.

Проблема в том, что у меня (5.5 G) это не работает: т.е. ключи после append не строятся ни через build(file), ни через build(key1); build(key2)...
Не работает build(key) и после закрытия и заново открытия файла.
Вероятно, надо использовать Btrieve API, чтобы выполнить Create Index, но я не знаю, как это сделать: нет документации по API и, главное, там потребуется описание структуры ключей, что весьма неудобно.

Пока я это проверял только под локальной Btrieve v6.15.430 for Windows NT/Windows 95 Client Engine. Но судя по опыту работы с Btrieve for Novell и программы на Clarion for Dos 3.1, это не заработает и с Novell/NT/2000/XP.

Еще одна странность: build(FILE) после открытия файла создает вообще непонятный файл, в котором вся информация находится в открытом виде, как будто перед этим отменили использование Owner.

Помогите советом, можно ли заставить работать append. Уж больно различается время запонения базы по сравнению с add.

Bourkov Andrei bav@makler.ru
Написал: ClaList(2)
Гость

Сообщение Гость »

Оператор build(file), выполненный после цикла добавления по append и до закрытия файла, должен заново построить ключи.
Как ты себе представляешь удаление ключей в сетевом режиме??????
Проблема в том, что у меня (5.5 G) это не работает: т.е. ключи после append не строятся ни через build(file), ни через build(key1);
build(key2)...
Не работает build(key) и после закрытия и заново открытия файла.
Ну есть такая фигня. Не умеет к баальшому сожалению Кларын драйвер нормально создавать/строить ключи в BTRIEVE-файле.
Вероятно, надо использовать Btrieve API, чтобы выполнить Create Index, но я не знаю, как это сделать: нет документации по API и, главное, там потребуется описание структуры ключей, что весьма неудобно.
Есть утилиты BTRIEVE. Одна из них butil запускается из командной строки...
Остальными утилитами можешь получить и стукртуру файла и ключей...
Еще одна странность: build(FILE) после открытия файла создает вообще непонятный файл, в котором вся информация находится в открытом виде, как будто перед этим отменили использование Owner.
Это очередной глюк драйвера
Помогите советом, можно ли заставить работать append. Уж больно различается время запонения базы по сравнению с add.
Оно того стоит???

С уважением, Ставич Олег
Укрсиббанк г.Харьков
oldstav@ukrsibbank.com
Написал: ClaList(2)
Гость

Сообщение Гость »

Оператор build(file), выполненный после цикла добавления по append и до закрытия файла, должен заново построить ключи.
Btrieve does not support non-key updates. To emulate APPEND() behavior, the driver drops all indexes possible when APPEND() is first called. Calling BUILD() immediately after appending records rebuilds the dropped key fields.
Вероятно, надо использовать Btrieve API, чтобы выполнить Create Index, но я не знаю, как это сделать: нет документации по API и, главное, там потребуется описание структуры ключей, что весьма неудобно.
Для ПЕРЕСТРОЕНИЯ ключей надо открывать файл в монопольном режиме.
После BUILD проверь код ошибки.
Еще одна странность: build(FILE) после открытия файла создает вообще непонятный файл, в котором вся информация находится в открытом виде, как будто перед этим отменили использование Owner.
Это действительно так. Чтобы сохранить шифрацию необходимо BUILD по всем ключам.
Помогите советом, можно ли заставить работать append. Уж больно различается время запонения базы по сравнению с add.
Нормально не заставишь. Ключи перестраивает серверная часть и на выделенном сервере различия по времени заполнения не будут.

--
Сергей Редькин mailto:SPR@enigmasoft.com.ua
ЧП "Энигма Софт"
Написал: ClaList(2)
Гость

Сообщение Гость »

Я в отпуске был, только вышел, но хочу предложить свой вариант.
У одного из наших клиентов совершенно непонятно почему вдруг развалился файл(тоже бэтривовский). В принципе, его можно было удалить, но в нем была информация о платежах, которые банк еще не провел (состояния документов), поэтому удаление было в принципе критично для клиента. Тогда я вставил в программу такие строки:
close(sdoc)
open(sdoc,12h)
pack(sdoc)
close(sdoc)
При первом же входе в процедуру просмотра все документы появились на экране. Может, попробуешь PACK вместо BUILD?

--
Best regards,
Anatoly mailto:warthog@belarusbank.minsk.by
Написал: ClaList(2)
Ответить