Как добавить новое поле / столбец в существующий файл / таблицу xBase

Я работаю над устаревшим настольным приложением. Он был написан с использованием Xbase++ из программного обеспечения Аляски. Я просто пытаюсь добавить новое поле в существующий файл базы данных, но я не могу найти документацию о том, как это сделать.

Я посмотрел на https://harbour.github.io/doc/, http://www.ousob.com/ng/clguide/index.php, https://en.wikibooks.org/wiki/Clipper_Tutorial:_a_Guide_to_Open_Source_Clipper(s), http://www.alaska-software.com/support/kbase-old.cxp без всякой удачи. Все, что задокументировано, - это создание нового файла БД с нуля. Можно ли вообще изменить структуру файла БД?

cFieldExist := .f.

FOR nField := 1 TO (oDbfMaster:ProType)->( FCount() )
    IF (oDbfMaster:ProType)->( FieldName( nField ) ) == 'newFieldName'
        cFieldExist  := .t.
    ENDIF   
NEXT

IF !cFieldExist  
    //Please help me here, I want to add a the new field 'newFieldName'
ENDIF

1 ответ

Решение

В старые времена, используя dBase или Clipper, мы использовали, чтобы открыть таблицу, скопировать структуру в новую таблицу:

ИСПОЛЬЗУЙТЕ СТРУКТУРУ КОПИРОВАНИЯ dbFile, РАСШИРЕННОЕ НА TempFile

В новой таблице каждая строка представляет собой поле из исходной таблицы. Вы добавляете новое поле и вводите имя поля, тип данных, длину поля, нет. десятичных дробей и т. д.

Затем, используя временный файл, вы создаете новый файл БД и добавляете в него записи из вашего старого БД:

СОЗДАТЬ newFile ИЗ TempFile ИСПОЛЬЗОВАТЬ newFile APPEND FROM dbFile

Наконец, вам нужно переименовать старый файл, а затем переименовать новый файл с этим именем и заново создать все индексы.

Другие вопросы по тегам