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

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

Поля [D6, Access]


Страницы:   1 2

Просто Я ©   (2004-04-27 14:31:00) 

Реально ли:

1)Переименовать поле NO на NO_NO сохранив данные этого поля?(через запрос)

 Пробовал через alter...., но тут получается удалять (drop), а потом создавать (add), заново это поле, данные удаляются. Может создавать отдельное поле, туда копировать (записей 100-200 не больше), удалять поле, создавать, а затем копировать данные в уже переименнованное поле???

(select pok_a, pok_b....pok_XX from pok)
2)Имееться 38 полей, необходимо отобразить 37, как подставить 37 полей в select, не перечисляя все 37. Может "*" , "-" то поле которое не нужно?


YurikGl   (2004-04-28 00:11:00) [1]

Честно, - не знаю. Все что могу предложить, - динамическое формирование строки, т.е. последовательно проходимся по списку полей и добавляем их в select. Что-то типа
st:='Select '
for i:=1 to 37 do
st:=st+..fields[i].name+','
и т.п.

В итоговом запросе все равно все перечисляется.

fields[i].name скорее всего не так пишется, но что-то подобное.

Второй вариант, - написать в запросе * а в объекте TQuery, дважды на него кликнув, сначала отобразить все поля, потом просто удалить ненужное поле.

З.Ы. Спать ухожу :)


Просто Я   (2004-04-28 00:00:00) [2]

YurikGl ©   (27.04.04 23:53) [28]
А я то думаю ну при чем тут вычисляемое поля, все перерыл, а тут она в резервации, не знал этого, короче блин! Ну ладно придумаем что-нить, точнее придумал.
На второй вопрос что-нить знаешь?


YurikGl   (2004-04-27 23:53:00) [3]

Проверил, в IB такого нет.


YurikGl   (2004-04-27 23:49:00) [4]

Можешь сделать select no from table, даже если в table нет такого поля.


YurikGl   (2004-04-27 23:46:00) [5]

Соглашусь с Курдль ©   (27.04.04 15:31) [14]
Expr1000 называется, обычно, вычисляемое поле, такое как sum или avg. Странно, что тебе позволили назвать поле no.

Видимо, в синтаксисе SQL для Access это слово что-то означает. В справке, с ходу, я этого не нашел.


Просто Я   (2004-04-27 23:03:00) [6]

YurikGl ©   (27.04.04 22:46) [24]
   вот здесь про него Просто Я ©   (27.04.04 15:29) [13]


YurikGl   (2004-04-27 22:46:00) [7]

> Ты встречался с таким полем в Access?
Каким именно?


Просто Я   (2004-04-27 22:44:00) [8]

YurikGl ©   (27.04.04 22:39) [22]
Пасиба, думал над этим, даже делал, но это геморой, пока еще поищу.

Ты встречался с таким полем в Access? Просто Я ©   (27.04.04 15:29) [13]


YurikGl   (2004-04-27 22:39:00) [9]

Пример. Пусть имеется таблица
CREATE TABLE SOTR(
ID_SOTR INTEGER NOT NULL PRIMARY KEY,
FIO CHAR(10) COLLATE PXW_CYRL,
OTDEL VARCHAR(IO) COLLATE PXW_CYRL,
DOLJNOST CHAR (10) COLLATE PXW CYRL
);
Пусть необходимо изменить характеристики столбца FIO, изменив тип столбца с CHAR(1O) на VARCHAR(25). Тогда:
1.   Добавляем в таблицу новый временный столбец FIO_TMP, полностью повторяющий характеристики изменяемого столбца FIO:
ALTER TABLE SOTR
ADD FIOJTMP CHAR(1O)   CHARACTER SET WIN1251 COLLATE PXW_CYRL;
2.   Копируем данные из FIO в FIO_TMP:
UPDATE SOTR SET FIO_TMP =   FIO;
3.   Удаляем столбец FIO:
ALTER TABLE SOTR DROP FIO;
4.   Создаем новый столбец FIO с необходимыми характеристиками:
ALTER TABLE SOTR
ADD FIO VARCHAR(25) COLLATE PXW_CYRL;
5.   Переписываем данные из временного столбца FIO_TMP в новый столбец      FIO:
UPDATE SOTR
SET FIO =  FIO_TMP;
6.   Удаляем временный столбец FIO_TMP:
ALTER TABLE SOTR DROP FIO_TMP;
ЗАМЕЧАНИЕ. Следует помнить, что изменение характеристик столбца, а также удаление столбца может закончиться неудачей, если:
•  столбец приобретает атрибуты PRIMARY KEY или UNIQUE, но старые значения в столбце нарушают требования уникальности данных;
• удаляемый столбец входил как часть в первичный или внешний ключ, что привело к нарушению ссылочной целостности между  таблицами;
•  столбцу были приписаны ограничения целостности CHECK на уровне таблицы;
•  столбец использовался в иных компонентах БД - в просмотрах,   триггерах, в выражениях для вычисляемых столбцов.
Все! вышесказанное свидетельствует о том, что в случае необходимости изменения атрибутов столбца или в случае удаления столбца, сначала необходимо тщательно проанализировать, какие последствия для таблицы и базы данных в целом может повлечь такое изменение или удаление.

Извиняйте, если какие символы не так распознались.


YurikGl   (2004-04-27 22:28:00) [10]

Щас сосканирую и выставлю целиком пример.


Просто Я   (2004-04-27 22:22:00) [11]

YurikGl ©   (27.04.04 21:40) [19]
Кажись я так и писал, тока позапутанней, это же сложновато будет осушествить на полях где имеються много (млн) записей, я думаю что все же это предусмотрели.

.....продолжаю поиске по всем источникам.


YurikGl   (2004-04-27 21:40:00) [12]

Сначала создаешь новый столбец. Потом копируешь update stolb set NewSt=OldSt, потом удаляешь старый.

Переписал из книги Delphi3 и создание приложений БД


Просто Я   (2004-04-27 20:13:00) [13]

Erik ©   (27.04.04 17:17) [17]
 Такой млин умный, и где такие рождаются???А по-существу сказать не судьба.


Erik   (2004-04-27 17:17:00) [14]

Зайди в MSAccess и все у тебя получится.


Просто Я   (2004-04-27 15:39:00) [15]

Курдль ©   (27.04.04 15:31) [14]
А что же при select * from pokup, и поле и данные отображаеться нормально.


Соловьев   (2004-04-27 15:36:00) [16]


> select no from pokup ,пишу в SQL Explorer, поле вместо нормального
> отображения поля, заголовок поля становиться Expr1000

ну так напиши
select [no] as no_no from pokup


Курдль   (2004-04-27 15:31:00) [17]


> no

Скорее всего это зарезервированное слово!


Просто Я   (2004-04-27 15:29:00) [18]

Соловьев ©   (27.04.04 15:17) [10]
 Эээ, мне нужно переменовать поле не таблицы с которой работаю, а из которой идет копирование.

Все это возникла из непонятного поведения поля с именем "no"(текстовое, размер-50), при запросе
select no from pokup,пишу в SQL Explorer, поле вместо нормального отображения поля, заголовок поля становиться Expr1000 и все значения 0, если переменовать это же поле, хотя бы в "no_no", все отображаеться нормально.


sniknik   (2004-04-27 15:23:00) [19]

> это ограничения провайдера?
скорее сервера БД.

> Может БДЕ - может такую штуку провернуть?
ну если через него работать с тем же pervasive то может.


Соловьев   (2004-04-27 15:18:00) [20]


> sniknik ©   (27.04.04 15:16) [9]

это ограничения провайдера? Может БДЕ - может такую штуку провернуть?


Страницы:   1 2

Наверх

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