Форум: "Базы";
Текущий архив: 2002.11.07;
Скачать: [xml.tar.bz2];
ВнизКак добавить поле к существующей таблице Найти похожие ветки
← →
JS (2002-10-03 17:09) [0]Как добавить поле к существующей таблице? пробовал Table1.AddIndex(...) выдает какие-то ошибки синтаксеса...
Как сделать по-умному? (и примерчик желательно! с описанием)
← →
Prooksius (2002-10-03 17:22) [1]Table1.Fields.Add(YourField)
← →
MsGuns (2002-10-03 17:27) [2]AddIndex не добавляет поля к существующему датасету (не к физ.таблице), а добавляет индекс для переупорядочивания записей в возвращаемом НД.
Для того, чтобы "добавить поле к существующей таблице" надо ее (физ.таблицу) реструктурировать. Вам надо именно это ?
Может просто нужно доп.поле (поля) для отображения временной информации (суммы по строке, например) ? Для этого в физ.таблицу ничего добавлять не надо. Достаточно добавить новое поле в датасет и предпочтительнее для Вас в Design режиме.
А целом вопрос звучит весьма абстактно, поэтому никаких примерчиков быть не может
← →
JS (2002-10-03 18:05) [3]таблица состоит из нескольких полей..
требуется добавлять (и улалять тоже) любое из полей.
например: таблица двух полей (телефон и фамилия) нужно добавить поле "Адрес"!
← →
Best Before 2024 (2002-10-03 18:11) [4]JS (03.10.02 18:05)
Чей адрес?
← →
MsGuns (2002-10-03 18:17) [5]>JS (03.10.02 18:05)
>требуется добавлять (и улалять тоже) любое из полей.
Понятно. Речь идет о способах отображения данных из физ.таблице. При этом надо добавлять в DBControl`ы (или убирать из них) любые поля. Если я правильно понял, то это ЗНАЧИТЕЛЬНО проще. Убрать-показать любой (кроме грида) контрол можно с помощью св-ва Visible или Top,Left,Hieght,Width
Если нужны поля-"мутанты", например сумма или адрес как "Улица"+"Номер дома"+"Квартира", то просто добавляются калькулируемые поля, в св-во которых записывается нужное выражение.
Для грида вкл/выкл полей лучше осуществлять св-вами колонок.
← →
JS (2002-10-03 18:33) [7]Наверное немного не так: нужно добавить поле к физ.таблице если такого поля еще несуществовало (и не обязательно его отображать в DBGrid) нужно добавить его к табилице и забыть про него (естесно ячейки его остаются пустыми...)
Sorry если некорректно сформулировал вопрос.
>>Prooksius © (03.10.02 17:22)
>>
>>Table1.Fields.Add(YourField)
пишу:
Table1.Fields.Add(MyFeild);
Выдает ошибку:
Incompatible types: "TFeild" and "String"
прпробовал:
Table1.Fields.Add("MyFeild");
тоже самое!
← →
MsGuns (2002-10-03 20:58) [8]Table1.Fields.Add добавляет описатель поля в коллекцию полевых описателей датасета, а НЕ НОВОЕ ПОЛЕ В ФИЗИЧЕСКУЮ ТАБЛИЦУ !
Для добавления,удаления,изменения физического поля в физической таблице надо делать РЕСТРУКТУРИРОВАНИЕ ТАБЛИЦЫ. Это делается или SQL-запросом или прямым вызовом BDE-процедур.
Однако мне тогда не понятно, что это за программа такая, которая при каждом сеансе РЕСТРУКТУРИРУЕТ ФИЗ.ТАБЛИЦУ.
Одно из двух: или Вы разработали совершенно никудышную модель БД
или не смогли как следует объяснить суть проблемы.
Таку прогу, конечно, можно сделать, но:
- 1. Одновременно с такой таблой может работать ТОЛЬКО 1 юзер и ТОЛЬКО из одного приложения.
- 2. В процессе работы приложения никаких запросов к этой таблице делать нельзя, что чрезвычайно ограничивает в инструментарии
- 3. Программа будет работать чрезвычайно медленно даже на небольших объемах данных
- 4. Каждый раз при запуске прога должна зачитывать структуру и соотв.образом настраивать свои контролы, включая всякие обработчики типа OnCalcFields, OnGetText и многое-многое другое
- 5. Крайняя неустойчивость к отказам железа. При обрыве эл.питания в процессе реструктуризации, как правило, рушится вся таблица и потом не факт, что подлежит восстановлению.
- 6. Полная импотенция такой таблице в плане применения ключей и индексов и, как следствие, невозможность использовать ее в связях Master-Detail
- 7. Может, хватит ?
← →
JS (2002-10-04 00:28) [9]Помоему немного не так - реструктур. табл. нужно сделать всего пару раз за всю историю программы..... :)
это что-то типа конструктора в MS Access - один раз добавил нужное поле и (может быть) через полгода добавил еще одно или удалил. Все остальное время прога работает с этой таблицей и лишь добавляет/удаляет записи...
← →
Jeer (2002-10-04 00:34) [10]Да делоть-то по всякому можно.
Опять же анти пример - 1С, когда можно в режиме пользователя менять структуру.
Но в основном реструктуризация делаетя при апгрейде и не часто.
Иначе - налицо плохое конструирование БД.
Если мы говорим конечно о реляционных базах.
Для объектных (а 1С смело на это нарывается) все не так..
← →
Beglec (2002-10-18 16:25) [11]Я понял тебя и твой вопрос JS, но ты его не понятно объесняешь.
И ответа конкретного всетаки здесь не прозвучало.
Действительно есть такая проблема: "Как добавить поле в (физическую) базу данных ?".
В данный момент у меня тоже есть такая проблема.
Задача:
Сервер - только он работает с базой данных - Exclusive ON
клиенты установлены на рабочих станция и через TCP общаются между сервером и сервер передает им нужные данные.
Разработка ПО ведется практически ONLine. То есть есть новая идея и ее нужно реализовать в срочном порядке, то есть время от времени приходится менять структуру таблицы.
Сервер можно перезапускать только 1 раз в сутки. Разработка самого ПО ведется на другой машине.
Каждый раз перед запуском сервера конфигурить БД в принцепе реально, но не целесообразно. Потому как можно забыть какое то поле подправить или изменить размер ну и все в таком духе. Лучше на много, чтобы сервер сам при запуске проверил правильность конфигурации БД.
Типа
Есть такое поле или нет, если нет то создать его не удаляя данные из БД.
У меня в данный момент это реализованы через Query-SQL, но хотелось бы услышать вариант через TTable, если таковой вообще существует.
спосибо за внимание
← →
John13 (2002-10-18 16:38) [12]Beglec © (18.10.02 16:25)
А как ты организовал добавление полей через Квери?
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2002.11.07;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.008 c