Rius |
Отправлено: 01.04.2005, 08:40 |
|
Мастер участка
Группа: Участник
Сообщений: 321
|
1. можно ли добавить поле через компонент TTable?
2. как добавляется в SQL (TQuery) поле типа double (со строкой получается alter table vendors add MyFieldsString char(20), а про double пишет "Invalid use of keyword token DOUBLE.
3. насколько опасна модификация таблицы через alter table, стоит ли действовать через копирование таблицы? Добавление полей предполагается проводить редко, но данные нельзя терять ни в коем случае.
|
|
avc* |
Отправлено: 01.04.2005, 09:07 |
|
Не зарегистрирован
|
QUOTE |
Добавление полей предполагается проводить редко
|
Может в таком случае пользоваться сторонней программой, умеющей грамотно управлять парадоксом ? |
|
Rius |
Отправлено: 01.04.2005, 09:16 |
|
Мастер участка
Группа: Участник
Сообщений: 321
|
Типа Database Desktop? Не катит. Имена полей считываются с устройства, и если их нет в таблице, добавлять должна сама программа, автоматически.
|
|
olegenty |
Отправлено: 01.04.2005, 09:43 |
|
Ветеран
Группа: Модератор
Сообщений: 2412
|
1. Создашь на лету таблицу, идентичную данной, и копируешь в неё все данные (create table + insert...select)
2. есть варианты: либо drop старой таблицы + create с новой структурой + insert из созданной копии, либо alter table (но я не знаю, убъёт ли это действие данные, или нет, если да, то insert из копии)
3. update добавленного поля/полей некими данными
4. drop копии
или, что мне кажется лучшим решением, создать промежуточную таблицу для хранения мета-мета данных, т.е. просто доработать модель и основную ключевую таблицу вообще руками не трогать. это вредно. вместо этого хранить в некоей таблице список её переменных полей, и в ещё одной (по одной на тип данных) — реальные данные этих полей.
|
|
Rius |
Отправлено: 01.04.2005, 12:54 |
|
Мастер участка
Группа: Участник
Сообщений: 321
|
olegenty Слишком сложно будет. Alter table кажется через копирование работает, так что будет так. Буду архивировать базу перед такими изменениями.
Как добавить через alter table поле типа double?
Все, нашел. В билдеровском SQL doulbe называется float'ом:
CODE | alter table add MyField float |
Отредактировано Rius — 01/04/2005, 16:20
|
|
olegenty |
Отправлено: 01.04.2005, 16:43 |
|
Ветеран
Группа: Модератор
Сообщений: 2412
|
не, я намекаю, что alter table это вообще не самя лучшая из идей. а вот вариант с ещё несколькими таблицами, где хранятся значения — это как раз то, что нужно. это сложно только в первый раз. один раз сделаешь, будет уже не сложно.
|
|
Rius |
Отправлено: 01.04.2005, 19:17 |
|
Мастер участка
Группа: Участник
Сообщений: 321
|
olegenty Т.е. вместо такой таблицы: http://img92.exs.cx/img92/3637/untitled26sx.png (7kB)
сделать такую:
http://img104.exs.cx/img104/4083/untitled12jc.png (12kB)
в принципе хорошая мысль, только как показывать сразу несколько полей без SQL? в первом варианте просто скрываются ненужные столбцы.
|
|