Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Строковые поля длинй больше 255 [D5, dBase, FoxPro, ]


Sergant ©   (2002-01-12 04:35:00) 

Имеется база DBF, у которой некоторые стринговые поля имеют длину 300. И не спрашивайте меня, как это может быть - я не знаю. При подключении к этой базе через BDE или ADO размер такого поля почему-то 44. При подключении через Apollo все нормально - 300.
Вопрос 1:Как можно корректно открыть такую базу через ADO (не хочу пользоваться BDE)?
Вопрос 2:Как изменить размер и тип поля и запомнить эти изменения?
Заранее благодарю.


Dark   (2002-01-15 21:56:00) [1]

Прочитал твой вопрос - как в зеркало посмотрел. У меня та же проблема. Только я знаю из-за чего, но нет знаю как устранить. Таблица у тебя скорее всего Clipper`овская. Он поддерживает длинные символьные поля. Не знаю как ADO, но BDE видит только один байт в заголовке таблицы, который отводится под длину поля (по-видимому и ADO тоже), а в Clipper`е их отводится два: первый - под остаток от реальной длины поля минус один или несколько раз по 254, а второй - эти несколько раз по 254. Скорее всего в ADO это тоже не уберешь. Но ты говоришь, что все нормально через Apollo. Тогда может подскажешь, где его можно взять. Позарез нужно!!!


ValWhite   (2002-01-14 04:52:00) [2]

Еще можно использовать Halcyonон без БДЕ...


Desdechado   (2002-01-13 14:50:00) [3]

так пользуйся Apollo, еме не нужен БДЕ


Apollon   (2002-01-13 08:42:00) [4]

тоже немного в сторону
когда я писал модуль чтения .DBF на паскале, то выяснилось, что FoxPro последних версий не пишет длину поля ( = 0),а вычисляет эту длину по разности смещений полей в записи. 44 = 300 - 256 , наверное переполнение. Видимо MS напоролась на то, за что боролась :) FoxPro отдельно - ADO отдельно, попробуй пайди нормальный драйвер для FoxPro, или перейди с драйвера dBase на FoxPro.


z0ne   (2002-01-12 11:11:00) [5]

Не совсем по теме но вот кусок из Clipper Guide, где описано как создавать поля более 255 символов

Character field lengths greater than 255: There are two
methods for creating a character field with a length
greater than 255 digits:

- Specify the field length using both the Field_len and
Field_dec fields according to the following
formulation:

FIELD->Field_len := <nFieldLength> % 256
FIELD->Field_dec := INT(<nFieldLength> / 256)

- Modify the structure of the extended structure
changing the length of Field_len to 5 then specify
the actual field length.
This can be accomplished in DBU.EXE.
Refer to the Database Utility chapter in the
Programming and Utilities guide for more
information.


Наверх

Титульная страница Поиск, карта сайта Написать письмо