Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Advantage Database Server > Изменение структуры DBF-а в программе |
Автор: GraNit 4.3.2010, 19:11 | ||
Здравствуйте! Может вы сможете мне помочь? Писал уже в форум C++Builder т.к. программа пишется в этой среде, но пока безуспешно. Суть проблемы: Следует изменить структуру DBF файла программой. Использую компонент Advantage TDataSet Descendant 8.1. В нем есть специальный метод AdsTable1->Restructure, но при попытке открыть измененную таблицу получаю ошибку "Project Project.exe raised exeption class EDatabaseError with message 'AdsTable1: Field 'DVV' not found'. Process stoped. Use Step or Run to continue." Вопрос: каким образом программа знает о удаленном поле? его уже физически нет в базе. Вот код:
Прошу вашей помощи. Спасибо. |
Автор: Данкинг 4.3.2010, 19:39 |
Приложи таблицу ради интереса. |
Автор: GraNit 5.3.2010, 06:53 |
Вот, пожалуйста. Добавлено через 1 минуту и 58 секунд Ха ![]() Первый раз что-то не получилось А так? |
Автор: GraNit 12.3.2010, 19:18 | ||
Разобрался. Вот в чем была проблема: Данные о полях таблицы в первую очередь хранят компонент TField. (Для чего требуется FieldDefs я пока не понял. Ну это я пока отложу.) По этой проблеме я получал ошибку при изменении структуры таблицы, т.к. после изменения, НО до открытия таблицы следует сделать Table1->Fields->Clear(). И после этого можно смело открывать базу. Т.к. я использую компонент Advantage TDataSet Descendant, то в моем распоряжении имеется специальная функция AdsRestructureTable, которая поможет мне изменить таблицу. Ну а вот, собственно, решение:
Далее создаем соединение и открываем базу. Кажется все. |