Форум: "Базы";
Поиск по всему сайту: delphimaster.net;
Текущий архив: 2002.04.04;
Скачать: [xml.tar.bz2];




Вниз

изменение структуры таблицы 


hm   (2002-03-07 15:33) [0]

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



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

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



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

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



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

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



sniknik   (2002-03-07 16:07) [4]

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



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

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

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



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

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



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

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



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

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



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

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



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

Проверил пример данный 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)



Johnmen   (2002-03-09 03:02) [11]

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

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



sniknik   (2002-03-09 09:15) [12]

В 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)



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

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

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



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

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




Форум: "Базы";
Поиск по всему сайту: delphimaster.net;
Текущий архив: 2002.04.04;
Скачать: [xml.tar.bz2];




Наверх





Память: 0.74 MB
Время: 0.016 c
1-9434            LiNkS                 2002-03-25 09:06  2002.04.04  
Перетаскивание формы


1-9571            snoup                 2002-03-24 22:25  2002.04.04  
Мне для звонилки нужна статистика (когда считает сколько ты времени провел в интернете)


7-9657            Самый главный Ламер   2001-12-30 18:12  2002.04.04  
Чтение из COM - порта и установка таймаутов.


3-9416            Vlad2                 2002-03-13 11:28  2002.04.04  
DBGrid


1-9452            Андрей Сенченко       2002-03-25 13:13  2002.04.04  
StringGrid ... достал уже если честно своей простотой..