Страница 1 из 1

Как добавить поле в существующую таблицу?

Добавлено: 28 мар 2005, 14:53
AlexY
требуется добавить пле в существующую таблицу. скажем katmc. Подскажите как это сделать. заранее благодарен

Re: Как добавить поле в существующую таблицу?

Добавлено: 28 мар 2005, 15:27
Maverick
Это - изменение структуры БД.
Юзать не советую... особенно если поле добавить нужно не в конец а в начало или середину... структура (а сл-но и данные полетять)...

Re: Как добавить поле в существующую таблицу?

Добавлено: 28 мар 2005, 15:35
AlexY
для моей задачи я другого выхода не вижу.

предварительно данные слить в dbf, а потом их затянуть... поле хочу добавить в конец таблицы... разве это не реально?

Re: Как добавить поле в существующую таблицу?

Добавлено: 28 мар 2005, 16:25
yuri_z
Реально, если не будешь добавлять индексы на это поле даже будет работать. alter table -стандартный синтаксис sql. Перед этим надо откючить протект... Потом надо обнулить контрольную сумму базы, чтоб не ругалась.
alter dictionary;
alter table KATMC
add (Myfieldr: string[65] "Мое поле"
)
;

Re: Как добавить поле в существующую таблицу?

Добавлено: 28 мар 2005, 17:10
IStep
Неужели механизм внешних атрибутов, классификаторов не подходи?
НЕ ВЕРЮ!

Re: Как добавить поле в существующую таблицу?

Добавлено: 28 мар 2005, 17:36
Seybukan
Кстати в 7.12 атриботом можно задать ссылку на каталог (сист. или польз. аналитики).
Правда обрабатывать придеться самим - ну скажем в ТХО АПИ.
То есть есил раньше мы в проводках по ТХО определяли аналитику при помощи фильтров - теперь можно в ТХО АПИ вытащить из атрибута накладной.
Хотя для не циклических аналитик (шапка документа) можно состряпать пользовательский режим определния аналитики а суммы выдяргивать стандартным идентификатором.

Правда каким образом данная возможность атрибутов влияет на отчеты не смотрел.

Re: Как добавить поле в существующую таблицу?

Добавлено: 29 мар 2005, 12:20
edward_K
добавить то можно, но лучше не стоит.
лучше обойтись конфигуратором или атрибутами,
или состряпать отдельную таблу со ссылкой на katmc и в нее уже пихать нужные поля, заполнять через свой фейсик. В свои потом добавляйте скока хотите.

Могут возникнуть проблемы с паскальным кодом программы

Добавлено: 29 мар 2005, 16:38
ScooP
Паскаль код программы работает на смещениях (можно посмотреть в модуле SQL - просмотр структуры), и если оно нарушится могут возникнуть проблемы при работе даже штатного функционала Галактики.
Такие дела...

Re: Могут возникнуть проблемы с паскальным кодом программы

Добавлено: 29 мар 2005, 20:13
AlexY
хорошо. а как добавить таблицу?

Re: Могут возникнуть проблемы с паскальным кодом программы

Добавлено: 30 мар 2005, 10:34
Deinis
Паскаль-код может и работает на смещениях. Но ежли докомпилять таблицу добавляя поля не в середину, а в конец таблицы или добавляя таблицы начиная с последнего уже существующего номера, то ошибок вроде быть не должно.

Re: Могут возникнуть проблемы с паскальным кодом программы

Добавлено: 30 мар 2005, 11:14
edward_K
конвертор погляди или доку если не влом :)
скажем с версии 584 на 585,711-712
там везде есть и добавление полей,и таблиц , и индексов.

Re: Могут возникнуть проблемы с паскальным кодом программы

Добавлено: 01 апр 2005, 16:34
Galpro_
Напугали человека :)
AlexY - все не так страшно.

Если у вас Pervasiv
Сначало докомпилируйте на тестовой базе:
1) Выгружаем что надо в dbf
2) Контрольн сумму сбрасываем в ноль
3) D_Dict в D_Dict.old
4) докомпилируем словарь
5) удаляем физ .dat таблицы которые докомпилировали
5) возращаем D_Dict
6) загружаем из dbf
7) все проверяем 10ть раз

На рабочей БД
1) Выгружаем что надо в dbf
2) удаляем физ .dat таблицы которые докомпилировали
3) копируем словарь в рабочую бд
все
4) загружаем из dbf
5) все проверяем 10ть раз:)

Как небольшое предупреждение некотрые интефейсы в которых использовалась
связка по (noindex) если вы добавите эти индексы могут неадекватно работать - требуется пересборка vip интерфейсов
На Pas ничего не замечено.

Вот примерчики.

Alter Table Basedoc
Add
(
dSumPlat : double "Сумма платежей по документу",
dSumGruz : double "Сумма отгрузок по документу",
dSumVozv : double "Сумма возвратов по документу",
ccbd1 : comp "Доп ссылка 1",
ccbd2 : comp "Доп ссылка 2",
ccbd3 : comp "Доп ссылка 3",
ccbd4 : comp "Доп ссылка 4",
ccbd5 : comp "Доп ссылка 5",
wbdD1 : word "Доп1",
wbdD2 : word "Доп2",
wbdD3 : word "Доп3",
wbdD4 : word "Доп4",
wbdD5 : word "Доп5",
bdRes1: string[41] "Примечание 1",
bdRes2: string[41] "Примечание 2",
bdRes3: string[41] "Примечание 3"
)
Add Index ( iPer0 = CNMOVECELL )
Add Index ( iPer1 = CPERSON )
Add Index ( iPer2 = CCOMPL )
;



Alter Table KatSopr
Add
(
MyStr1 : string[255] "String-поле1",
MyStr2 : string[255] "String-поле2",
MyWord1 : word "Word-поле1",
MyWord2 : word "Word-поле2",
MyComp1 : comp "Comp-поле1",
MyComp2 : comp "Comp-поле2"
)
Add Index (MyIndw1 = MyWord1 + VIDSOPR + DSOPR + NSOPR)
Add Index (MyIndw2 = MyWord1 + CSTEPDOC + VIDSOPR + DSOPR + NSOPR)
Add Index (MyIndw3 = MyWord2 + VIDSOPR + DSOPR + NSOPR)
Add Index (MyIndw4 = MyWord2 + CSTEPDOC + VIDSOPR + DSOPR + NSOPR)
Add Index (MyIndw5 = MyComp1 + VIDSOPR + DSOPR + NSOPR)
Add Index (MyIndw6 = MyComp2 + VIDSOPR + DSOPR + NSOPR)
Add Index (add1 = dSopr)
Add Index (add2 = cPodrTo)
Add Index (add3 = cPodrFrom)
Add Index (add4 = CORG + VidSopr)
Add Index (add5 = cCompl+ VidSopr)
Add Index (add6 = VidSopr + cKatSopr)
;

Re: Могут возникнуть проблемы с паскальным кодом программы

Добавлено: 04 апр 2005, 15:49
oiko
После ковертера 711-712 Pervasive "захворала" таблица katsopr новые записи добавляет а старые только читает и не дает ни удалить ни модифицировать. Лечится только выкачкой в дбф физическим удалением файла и вкачкой обратно. Виновата по моему была комнада модификации индекса. :(