Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 1 828

/ вопрос открыт /

Здравствуйте!

Есть таблица DBF, созданная в Visual FoxPro 9. Размер 45 Мб. 116018 записей, 36 колонок: string, numeric

При обращении через компонент
Advantage TDataSet Descendant 9.0

выдаёт "Native Error 7016:Corrupt table .... open
a dbf with adt table type or vice versa"

Но эта же таблица нормально совершенно открывается через Halcyon 6. Через сам Visual FoxPro 9.

В чём может быть проблема?

Delphi 7, WinXPSP2

Anton (w) Вопрос ожидает решения (принимаются ответы, доступен мини-форум)

Вопрос задал: Anton (w) (статус: Посетитель)
Вопрос отправлен: 20 августа 2008, 08:20
Состояние вопроса: открыт, ответов: 1.

Ответ #1. Отвечает эксперт: Мережников Андрей

Здравствуйте, iamantbk!
В принципе, ответ на Ваш вопрос содержится в сообщении об ошибке - несовместимые типы таблиц dbf и adt (это собственный формат данных Advantage). Проблема может заключаться в именах полей Вашей таблицы. Для Advantage существуют следующие ограничения:
Имена полей Advantage ADT и индексов Advantage ADI могут быть размером до 128 символов и могут включать любые символы кроме: '0' (ноль), ';' (точка с запятой) и ',' (запятая).

Ответ отправил: Мережников Андрей (статус: Абитуриент)
Время отправки: 20 августа 2008, 20:55


Мини-форум вопроса

Всего сообщений: 4; последнее сообщение — 21 августа 2008, 10:23; участников в обсуждении: 2.
Anton (w)

Anton (w) (статус: Посетитель), 21 августа 2008, 03:47 [#1]:

Но я же использую именно DBF, а не ADT:
у TAdsTable свойство "TableType" = "ttAdsVFP", а не "ttAdsADT"

В принципе можно и Halcyon использовать, но есть одно "но" - это нужны SQL-запросы.

Вот структура файла NAMEOFTABLE.DBF. В заголовках нет указанных символов (в экселе удобно смотреть):
Поле Тип Размер Точность
ID C 8 0
ID_PARENT C 8 0
ID_GLOBAL C 8 0
OWNER C 2 0
ACTIVE C 1 0
ACCES_DATE T 8 0
ACCES_TYPE C 4 0
ACCES_NAME C 15 0
PROC_DATE T 8 0
ID_MES C 8 0
DATABEGIN D 8 0
DATAEND D 8 0
NAM C 1 0
ID_ABONENT C 8 0
CFAM C 80 0
CADR C 80 0
NLS C 10 0
NSALDO Y 8 4
PODUSL C 1 0
NDOP C 2 0
TARIF Y 8 4
TARIFLG Y 8 4
P_COUNT C 1 0
NORMATIV N 12 4
DPOPL D 8 0
PSOPL C 15 0
LGNORM N 8 2
LGPART N 5 4
DOPENI N 2 0
DPENI D 8 0
PENI Y 8 4
P_ZAPR C 1 0
P_PENI C 1 0
SERVICE C 4 0
ID_VIDOPL C 8 0
ID_SGOR C 8 0
Anton (w)

Anton (w) (статус: Посетитель), 21 августа 2008, 03:48 [#2]:

Блин, форум табуляцию убрал. В экселе неудобно просматривать...
Мережников Андрей

Мережников Андрей (статус: Абитуриент), 21 августа 2008, 05:59 [#3]:

Таблица индексирована?
Мережников Андрей

Мережников Андрей (статус: Абитуриент), 21 августа 2008, 10:23 [#4]:

Посмотрел еще раз документацию по Advantage. Так вот, если таблица dbf, то типы полей Currency (Y) и DateTime(T) не поддерживаются. В этом проблема. И длина названия поля не должна превышать 10 симоволов. Если таблица неиндексирована, то можно использовать соединение через ADO, который поддерживает SQL запросы. Если есть индекс, то могут возникнуть ошибки при изменении Вашей таблицы. Хотя при наличии соответствующего ODBC драйвера для VFP, проблем быть не должно.

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 22 февраля 2025, 11:54
Выполнено за 0.03 сек.