Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.11.07;
Скачать: CL | DM;

Вниз

Как добавить поле к существующей таблице   Найти похожие ветки 

 
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
Если нужны поля-"мутанты", например сумма или адрес как "Улица"+"Номер дома"+"Квартира", то просто добавляются калькулируемые поля, в св-во которых записывается нужное выражение.
Для грида вкл/выкл полей лучше осуществлять св-вами колонок.




 
Слава   (2002-10-03 18:18) [6]



 
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;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.016 c
1-21570
Юрий К
2002-10-30 01:14
2002.11.07
Доступ к свойствам компонента по индексу


1-21619
DNT
2002-10-26 18:17
2002.11.07
Как вытащить различную инфу из файла?


14-21751
Дмитрий К.К.
2002-10-01 15:49
2002.11.07
Сколько может выдержать Delphi? :)


1-21652
Rayslava
2002-10-26 21:43
2002.11.07
Поиск по файлу


1-21601
Oleg_V
2002-10-30 12:36
2002.11.07
Народ подскажите как заблокировать Alt+F4 в своей программе.