Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

изменение структуры таблицы [dBase, FoxPro]


hm ©   (2002-03-07 15:33:00) 

Подскажите, плиз, как в программе изменить длину поля? Поле Numeric - длина - 8, а надо сделать 4. Заранее спасибо


deleon   (2002-03-11 10:59:00) [1]

http://www.dbwork.kuban.ru
скачай компонент TDbCheck
он для Paradox & dBase изменяет структуру без потери данных при помощи BDE Api функции DbiDoRestructure


Anatoly Podgoretsky   (2002-03-09 09:32:00) [2]

Без потери делается за 6 шагов
1. add tmp
2. tmp = old
3. drop old
4. add old
5. old = tmp
6. drop tmp

3/4 можно совместить, если позволяет синтаксис


sniknik   (2002-03-09 09:15:00) [3]

В helpe совпадения имен оговаривается и это possible. А самое главное я пробовал это работает! Единственное могут быть различия в SQL для разных драйверов. Надо смотреть help к конкретному драйверу к какому подключаешся.

It is possible to delete and add a column of the same name in the same ALTER TABLE statement, however any data in the column is lost in the process. This allows quick redefinition of columns while still in the database design stages.

ALTER TABLE "Names.db" DROP LastName, ADD LastName CHAR(30)


Johnmen   (2002-03-09 03:02:00) [4]

Сначала :
ALTER TABLE MyTable DROP MyField
А уж потом только :
ALTER TABLE MyTable ADD MyField NUMERIC(4)

За один ALTER TABLE может не проходить ввиду совпадения имен полей !


sniknik   (2002-03-08 01:50:00) [5]

Проверил пример данный Val © (второй по счету) он вполне рабочий так что не жалей а чаще пробуй.
ALTER TABLE "Currency.dbf" DROP CurType, ADD CurType NUMERIC (10,4)
Правда он не модифицирует столбец а удаляет вместе с данными и создает новый. Надо сохранятся. Пробовал в локал SQL. Поля с именами внутренних переменных/процедур (Date, Time, Money ....) дают ошибку их надо брать в кавычки "".
ALTER TABLE "Currency.dbf"
DROP "Currency.dbf"."Money", ADD "Currency.dbf"."Money" NUMERIC (10,4)


hm   (2002-03-07 16:49:00) [6]

Не помогло. А жаль. Но все равно спасибо.


sniknik   (2002-03-07 16:43:00) [7]

Боюсь это тебе не поможет я это взял из программы работающей с Pervasive SQL (на dbf подключенном через ado jet работать отказалась)
ALTER TABLE CASHSAIL MODIFY CARDSIZE CHAR(25)


sniknik   (2002-03-07 16:29:00) [8]

Значит таблица старого формата должно менятся. Ищи ошибку в Alter table. Щас у себя посмотрю если найду пример выложу.


hm   (2002-03-07 16:22:00) [9]

2 sniknik
Я в фоксе меняю (8 на 4) и усе в порядке!!!
Здесь-то как сделать?


hm   (2002-03-07 16:17:00) [10]

2 sniknik
да нет. Numeric 8. :(

2 Val
Все как там написано делаю а он мне тоже самое :(
вобще больше ничего делать не буду с этими базами :((


sniknik   (2002-03-07 16:07:00) [11]

Некоторые таблицы не позволяют иметь типы с изменяемой длинной. Проверь запрос на строковом поле оно везде изменяемо. А DBF раньше Numeric был изменяемым а в новых типизирован. (все одно что пытатся в Delphi Word-у длинну 1 присвоить а это уже Byte) Извиняюсь за путанные обьяснения.
(Если у тебя есть досовский нортон открой в нем таблицу и по F2 посмотри структуру если у поля стоит Numeric 20.5 то хрен измениш)


Val   (2002-03-07 15:56:00) [12]

посмотрите синтаксис точнее в Local SQL Help


hm   (2002-03-07 15:53:00) [13]

Ругается!! Может, потому что табличка через ADO ? Ставлю ADOQuery - пишу, пускаю - пишет - синтакс еррор!


Val   (2002-03-07 15:45:00) [14]

Например с помощью TQuery.SQL:
alter table mytable
drop field myoldfield, add field mynewfield number(4)


Наверх

Титульная страница Поиск, карта сайта Написать письмо