Автор | Сообщение |
|
| |
Пост N: 8
Зарегистрирован: 24.07.12
|
|
Отправлено: 02.04.13 16:05. Заголовок: динамически добавить поля
Добрый день, All! Подскажите возможно ли программно добавлять в рабочую базу новые поля? Мне представляется только один метод: создать базу с новой структурой и в цикле по полям и записям добавить туда данные из старой базы, потом старую базу удалить а новую назвать старым именем Есть ли другой метод?
|
|
|
Ответов - 4
[только новые]
|
|
|
| Администратор
|
Пост N: 2815
Зарегистрирован: 23.05.05
|
|
Отправлено: 02.04.13 16:52. Заголовок: chirr пишет: Есть л..
chirr пишет: Нет, это единственно возможный способ, я тоже так делаю. Необходимо, чтобы при этом файл был открыт одним пользователем, который и добавляет поля. При сетевой работе добавить новые поля нельзя.
|
|
|
|
| |
Пост N: 39
Зарегистрирован: 07.06.08
|
|
Отправлено: 03.04.13 10:09. Заголовок: Я делаю примерно так..
Я делаю примерно так (пример), может пригодится. 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
|
|
|
|
| постоянный участник
|
Пост N: 334
Зарегистрирован: 13.10.05
|
|
Отправлено: 06.04.13 07:54. Заголовок: Нормально! Я почему-..
Нормально! Я почему-то думал , что append from только для одинаковых структур. Оказывается к большей меньшее , то же можно
|
|
|
|
| |
Не зарегистрирован
Зарегистрирован: 01.01.70
|
|
Отправлено: 06.04.13 08:43. Заголовок: Таки и к меньшей структуре можно
Не переваривает только разные типы одного поля.
|
|
|
|