Форум » Clipper » динамически добавить поля » Ответить

динамически добавить поля

chirr: Добрый день, All! Подскажите возможно ли программно добавлять в рабочую базу новые поля? Мне представляется только один метод: создать базу с новой структурой и в цикле по полям и записям добавить туда данные из старой базы, потом старую базу удалить а новую назвать старым именем Есть ли другой метод?

Ответов - 4

Pasha: chirr пишет: Есть ли другой метод? Нет, это единственно возможный способ, я тоже так делаю. Необходимо, чтобы при этом файл был открыт одним пользователем, который и добавляет поля. При сетевой работе добавить новые поля нельзя.

a_sidorov: Я делаю примерно так (пример), может пригодится. Open_Dbf - моя функция, нужна переиндексация. select TKLIENTS if FieldNum( 'ID_USER' ) == 0 n := lastrec() a := DbStruct() aAdd( a, { 'ID_USER', 'N', 7, 0 } ) use DbCreate( SPaths[1]+'TKLIENTS.db', a ) use ( SPaths[1]+'TKLIENTS.db' ) sayDo( { 'Модифицирую TKLIENTS.dbf',; 'Количество записей '+alltrim(str(n,20)) } ) append from ( SPaths[1]+'TKLIENTS.dbf' ) use delete file ( SPaths[1]+'TKLIENTS.dbf' ) rename (SPaths[1]+'TKLIENTS.db') to (SPaths[1]+'TKLIENTS.dbf') Open_Dbf( "TKLIENTS", .t. ) // переиндексация endif

Vlad04: Нормально! Я почему-то думал , что append from только для одинаковых структур. Оказывается к большей меньшее , то же можно


petr707: Не переваривает только разные типы одного поля.



полная версия страницы