Titan Error 22, после перехода с 7.11 на 7.12

Программирование на Атлантисе (VIP, FCOM, ARD), FastReport

Модераторы: m0p3e, edward_K, Модераторы

VIY
Сообщения: 16
Зарегистрирован: 12 сен 2005, 16:22
Откуда: Saratov
Контактная информация:

Titan Error 22, после перехода с 7.11 на 7.12

Сообщение VIY »

используются: Delphi 6, Pervasive SQL 2000i, Titan

программка делала отчеты, собирая данные из нескольких таблиц, пересчитывая и тп.
всё работало.
обновили Галактику с 7.11 до 7.12, конвертировали базу
=> при обращении к таблице SPORDER в конвертированной базе выдается следующее:
"Btrieve Status 22 - The data buffer parameter is too short.
DBI Erro Code = Titan (BDE) Error 22."

Вылетает на третьей строке вот этого куска кода:
//
tbTable7.TableName:='SPORDER';
tbTable7.IndexName:='12 - CSPSOPR+VIDORDER+DORD';
tbTable7.Active:=true; //вот тут
//
Вот что пишут в "Btrieve™ Status Codes & Messages":
"
22: The data buffer parameter is too short.

The data buffer parameter specified by the application was not large enough to accommodate either the minimum length of the record for an Insert or Update operation, or the entire record length for a Get or Step operation. Also, the data buffer may not be large enough to accommodate the length of data required for operations such as Create, Create Index, Stat, Get By Percentage, Find Percentage, or Version.

For Get or Step operations, the MicroKernel returns as much data as it can and this status code, indicating that it cannot return the entire record.

For an Insert operation, the MicroKernel does not insert the record if the data buffer is shorter than the fixed-length portion of the record.

For an Update operation, if the data buffer is too short to contain the fixed-length portion of a record, the MicroKernel does not update the record.

For the Create, Stat, and Create Index operations, the data buffer is not long enough to contain all the file specifications, the key specifications, and (if specified) the ACS definition.

For the Get by Percentage or Find Percentage operation, the data buffer length is less than 4 bytes.

For the Version operation, the data buffer length is less than 5 bytes.

This status code can also indicate a corrupt file if the file allows variable-length records and you receive this status code on a Get or Step operation. In such a corrupt file, you can receive Status Code 54 when you use Get or Step operations to read other records. Recover the file according to the instructions in the User's Guide.
"
То есть либо не хватает размера буфера (если так, то где он задается?), либо "This status code can also indicate a corrupt file if the file allows variable-length records" (файл битый, так?), но в то же время самой Галактикой эта табличка спокойно просматривается.

Если натравливаю программку на неконвертированную базу - все работает. На конвертированной - вот такая вот беда.
Причем обращения к нескольким остальным таблицам (KATMC, KATSOPR, SPSOPR и тп.) идут нормально, то есть если комментирую в коде все что связано с SPORDER, либо если в базу копирую _старый_ SPORDER.dat то все работает.

В чем может быть дело? И как с этим бороться...? Никак не соображу... :( Неужели кривые руки?
Help plz
Max_Fin
На пенсии
Сообщения: 797
Зарегистрирован: 29 мар 2005, 17:49
Откуда: г. Тюмень
Контактная информация:

Сообщение Max_Fin »

а словарь? ADF2DDF выполнили?
Жду выхода Вселенная 2.12!
VIY
Сообщения: 16
Зарегистрирован: 12 сен 2005, 16:22
Откуда: Saratov
Контактная информация:

Сообщение VIY »

Max_Fin писал(а):а словарь? ADF2DDF выполнили?
думал об этом.
нет. не выполнили(уточню, но вроде бы нет)...
в комплекте с саппортом не было ADF2DDF :/
Здесь есть выложенный?
ищу...
Алексей
Местный житель
Сообщения: 2896
Зарегистрирован: 24 июн 2005, 12:12
Откуда: Иркутская область

Сообщение Алексей »

этот модуль должен быть в лицензии с саппортом - это его часть.
VIY
Сообщения: 16
Зарегистрирован: 12 сен 2005, 16:22
Откуда: Saratov
Контактная информация:

Сообщение VIY »

в папке с установленным саппортом лежат
adf2ddf.cnt
и ADF2DDF.HLP
а Exe-шника нет. :/
Алексей
Местный житель
Сообщения: 2896
Зарегистрирован: 24 июн 2005, 12:12
Откуда: Иркутская область

Сообщение Алексей »

Это не отдельная программа, а часть саппорта. Его модуль. Как SQL или журнализация, так же и ADF2DDF. У вас должна быть лицензия на этот модуль, что бы из саппорт а запускать этот модуль.

Это НЕ отдельная программа, при чём тут Ехе-шник.
sim
Местный житель
Сообщения: 1805
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Россия

Сообщение sim »

зайди в support в демо-режиме, будет доступна утилита adf-ddf
вот только будет ли она работать в таком варианте? история об этом умалчивает ;)
VIY
Сообщения: 16
Зарегистрирован: 12 сен 2005, 16:22
Откуда: Saratov
Контактная информация:

Сообщение VIY »

Алексей писал(а):Это не отдельная программа, а часть саппорта. Его модуль. Как SQL или журнализация, так же и ADF2DDF. У вас должна быть лицензия на этот модуль, что бы из саппорт а запускать этот модуль.

Это НЕ отдельная программа, при чём тут Ехе-шник.
спасибо.
этот модуль не куплен :(
какие-то еще пути есть? кроме покупки
sim писал(а):зайди в support в демо-режиме, будет доступна утилита adf-ddf
вот только будет ли она работать в таком варианте? история об этом умалчивает
удалил в galnet.cfg адрес на ключик.
запустился саппорт. ругнулся. сказал что работает в демо.
в [=]->"Главное меню" и в [=]->"Утилиты" нету adf2ddf... похоже что нельзя... щас попробую переставить саппорт не подсовывая ему лики
Последний раз редактировалось VIY 10 фев 2006, 12:45, всего редактировалось 1 раз.
sim
Местный житель
Сообщения: 1805
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Россия

Сообщение sim »

не так надо
убери на время лицензионник из SUP_EXE
VIY
Сообщения: 16
Зарегистрирован: 12 сен 2005, 16:22
Откуда: Saratov
Контактная информация:

Сообщение VIY »

уже переставил)
в менюшке появилось... вроде запустил конвертацию. посмотрим что получится... (на копии базы экспериментирую)
VIY
Сообщения: 16
Зарегистрирован: 12 сен 2005, 16:22
Откуда: Saratov
Контактная информация:

Сообщение VIY »

хм...
в общем сделалось data\ddf\*.ddf
скопировал их еще и в data\

саппортом же еще и проверил целостность таблиц базы. он вроде как отрапортовал, что все в норме.

запускаю прогу. опять та же история. с другими таблицами вроде все норм, с sporder - error 22 :\

действия были правильными?
где еще теоретически может быть беда?

RECOVER2.BAT натравленный на эту таблицу тоже не помог... эффект тот же.
Может дело в загадочном буфере?

А может ли помочь установка свежей версии Pervasive ? или Титана?
уже не знаю за что цепляться... поставил ну другой комп Delphi, пробовал откомпилировать там - не помогло. Все та же ошибка.
VIY
Сообщения: 16
Зарегистрирован: 12 сен 2005, 16:22
Откуда: Saratov
Контактная информация:

Сообщение VIY »

посмотрел свойства таблиц SPORDER в 7.11 и 7.12...
в глаза бросилось, что в версии от 7.11 "Number of Indexes" = 29, а в версии от 7.12 их уже 30.
Может беда компоненты что не может глотать такие большие таблицы (более 100 Мб) с таким количеством индексов... завтра попробую поэкспериментировать...

Никто не сталкивался с похожим?
Другие идеи появления ошибки есть?
Goblin
Местный житель
Сообщения: 474
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Сибирь-матушка
Контактная информация:

Сообщение Goblin »

А проект пересобирать типа не надо ?
Титановские компоненты с однажды определенной структурой сами умеют перестраиваться на основе словаря ? Скорее всего нет ...

1) У всех проблемных таблиц в проекте удалить все поля
2) Произвести их отключение/подключение дабы компонента смогла перечитать структуру таблицы
3) У всех проблемных таблиц в проекте добавить поля
4) Пересобрать проект
Питаю патологические отвращение и ненависть в особо тяжелой и крайне запущенной формах к семейству программ Microsoft Business Solution !
Восславим господа Кришну за то, что у нас есть ГАЛАКТИКА !
VIY
Сообщения: 16
Зарегистрирован: 12 сен 2005, 16:22
Откуда: Saratov
Контактная информация:

Сообщение VIY »

Goblin писал(а):А проект пересобирать типа не надо ?
Титановские компоненты с однажды определенной структурой сами умеют перестраиваться на основе словаря ? Скорее всего нет ...

1) У всех проблемных таблиц в проекте удалить все поля
2) Произвести их отключение/подключение дабы компонента смогла перечитать структуру таблицы
3) У всех проблемных таблиц в проекте добавить поля
4) Пересобрать проект
Сегодня делал следующее:
1. Скопировал конвертированную в 7.12 базу на жесткий (H:\Feb\data\)
2. Настроил локальную Галактику на эту базу
3. Прогнал базу через ADF2DDF, используя на время лишенный lic-файла саппорт. Файлы DDF скопировал в корневик базы (H:\Feb\data\)
4. Создал в Delphi 6.0 _новый_ проект.
5. Положил на форму:
- tbDataBase
- tbTable (2 штуки)
6. Прописал в tbDataBase:
- AliasName = H:\Feb\data\
- DataBase = MyBase
- SessionName = Btrieve
7. В таблице tbTable1 :
- Databasename = MyBase
- кликаю в TableName - показывается окошко первасива(соединение с базой). прячется. в TableName выводится перечень таблиц базы. Выбираю первую попавшуюся (ну, например, SPISK).
- кликаю в IndexName - показывается перечень... выбираю любой. Всё ок.
8. В таблице tbTable2 :
- Databasename = MyBase
- кликаю в TableName - выводится перечень таблиц базы. Выбираю на этот раз уже конкретно SPORDER. Выбрал.
- кликаю в IndexName - вываливается та самая ошибка "Btrieve Status 22 - The data buffer parameter is too short. DBI Erro Code = Titan (BDE) Error 22."
===============================================
вот такие вот дела... :/
Max_Fin
На пенсии
Сообщения: 797
Зарегистрирован: 29 мар 2005, 17:49
Откуда: г. Тюмень
Контактная информация:

Сообщение Max_Fin »

попробуйте с проверить с помощью Pervasive Control Center
если все путем, копайте Титановские компоненты.
Жду выхода Вселенная 2.12!
Ответить