|
как правильно добавить поле в существующую таблицу Visual FoxPro ?
|
|||
---|---|---|---|
#18+
для добавления програмно поля в таблицу воспользовался такой конструкцией ALTER TABLE z_config ADD is_bez_provodok L так как программа распространена на десятке компьютеров, захотелось сделать создание поля автоматически, там где его нет. Для этого узнаю его наличие показанным ниже способом. Не самым изящным, конечно. LOCAL est as Logical SELECT * FROM z_config INTO CURSOR tmp_z_config gnFieldcount = AFIELDS(gaMyArray) && создается массив. est = .f. FOR nCount = 1 TO gnFieldcount IF gaMyArray(nCount,1) == "is_bez_provodok" est = .t. endif ENDFOR DELETE FILE tmp_z_config IF NOT est USE z_config EXCLUSIVE ALTER TABLE z_config ADD is_bez_provodok L endif При выполнении останавливается на строке USE z_config EXCLUSIVE Сообщение File is in use. Что я делаю не так? Помогите, целый день потратил на этот кусок кода. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.02.2012, 19:23 |
|
как правильно добавить поле в существующую таблицу Visual FoxPro ?
|
|||
---|---|---|---|
#18+
Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24.
... |
|||
:
Нравится:
Не нравится:
|
|||
27.02.2012, 19:48 |
|
как правильно добавить поле в существующую таблицу Visual FoxPro ?
|
|||
---|---|---|---|
#18+
Исправил опечатку Код: sql 1. 2. 3. 4. 5. 6. 7. 8.
... |
|||
:
Нравится:
Не нравится:
|
|||
27.02.2012, 19:51 |
|
как правильно добавить поле в существующую таблицу Visual FoxPro ?
|
|||
---|---|---|---|
#18+
Перебор полей ни к чему, достаточно проверить условие type("z_config.is_bez_provodok")=='L' Фраза "File is in use" явственно намекает, что z_config уже открыт. Для эксклюзивного открытия придется выполнить use in select("z_config") Ну и неплохо бы обработатьть ситуацию, а получится ли эксклюзивно открыть таблицу z_config ;) ... |
|||
:
Нравится:
Не нравится:
|
|||
27.02.2012, 19:52 |
|
как правильно добавить поле в существующую таблицу Visual FoxPro ?
|
|||
---|---|---|---|
#18+
XAndy, Dag, спасибо, завтра попробую все советы в своей базе. уверен сработает. насчет того что файл открыт и его надо бы закрыть я четко осознавал в Фоксе чёрт голову сломает в изобилии команд. Тяжкое наследие досовских времен, как сказал бы Остап Бендер. я закрытие z_config никак подобрать не мог, а определить наличие поля в таблице, сделал тем , что под руку подвернулось. прикольно, что мне на досовском Клиппере создавать приходилось нехилой длинны проги двно, очень давно. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.02.2012, 20:57 |
|
как правильно добавить поле в существующую таблицу Visual FoxPro ?
|
|||
---|---|---|---|
#18+
не надо перебирать поля, можно проще сделать если, например, таблица mytable входит в контейнер базы данных mybase, а не свободная она, то проверить есть ли в ней поле myfield и, если его нет, то добавить его можно примерно так: OPEN DATABASE mybase.dbc IF INDBC("mytable.myfield,"FIELD") = .F. USE mytable IN 0 EXCLUSIVE ALTER TABLE 'mytable ' ADD COLUMN 'myfield' C(100) USE IN mytable ENDIF CLOSE DATABASES ALL DELETE FILE("*.bak") ... |
|||
:
Нравится:
Не нравится:
|
|||
28.02.2012, 10:06 |
|
как правильно добавить поле в существующую таблицу Visual FoxPro ?
|
|||
---|---|---|---|
#18+
КонецЦиклаIF INDBC("mytable.myfield,"FIELD") = .F. Не обязательно контейнер БД использовать: Код: sql 1.
только предварительно таблица должна быть обязательно открыта. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.02.2012, 10:18 |
|
как правильно добавить поле в существующую таблицу Visual FoxPro ?
|
|||
---|---|---|---|
#18+
Всем принявшим участие премного благодарен. Вот конечный код который запахал. Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12.
... |
|||
:
Нравится:
Не нравится:
|
|||
28.02.2012, 13:48 |
|
как правильно добавить поле в существующую таблицу Visual FoxPro ?
|
|||
---|---|---|---|
#18+
Вот это лишнее: Код: sql 1. 2. 3.
т.к. чуть выше все открыто, а Код: sql 1.
переоткрывает если в текущей рабочей области открыт z_config ... |
|||
:
Нравится:
Не нравится:
|
|||
28.02.2012, 14:22 |
|
как правильно добавить поле в существующую таблицу Visual FoxPro ?
|
|||
---|---|---|---|
#18+
Dima T, ок, попробую у меня как раз с открытием эксклюзивно проблемы были по началу после чего я и написал на форум из моей каракатицы, получается все более компактный код проект у меня в руках большой, написанный не мной. я в нем делаю небольшие изменения даже не въезжаю где там таблицы открываются, они в контейнере находятся. действую, исходя из не очень четких представлений о проекте ... |
|||
:
Нравится:
Не нравится:
|
|||
28.02.2012, 20:44 |
|
|
start [/forum/topic.php?fid=41&fpage=61&tid=1583811]: |
0ms |
get settings: |
11ms |
get forum list: |
16ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
27ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
49ms |
get tp. blocked users: |
2ms |
others: | 255ms |
total: | 383ms |
0 / 0 |