Как добавить новое поле / столбец в существующий файл / таблицу xBase - PullRequest
0 голосов
/ 25 января 2019

Я работаю над устаревшим настольным приложением. Он был написан с использованием 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 Ответ

0 голосов
/ 25 января 2019

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

USE dbFile СТРУКТУРА КОПИРОВАНИЯ, РАСШИРЕННАЯ ДЛЯ TempFile

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

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

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

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

...