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

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

Добавление полей типа fkCalculated к открытой TADOQuery [D6, MSSQL]


Nikolai_S ©   (2004-03-12 12:35:00) 

Как добавить к открытой TADOQuery вычисляемое поле (TFloatField, fkCalculated). В справке Delphi есть пример добавления поля к датасету, но датасет там должен быть закрыт.


Johnmen   (2004-03-12 16:23:00) [1]

ADOQuery1.FieldList.Update;   ?


Nikolai_S   (2004-03-12 16:01:00) [2]

ADOQuery1.FieldDefList.Update - не подходит, он не выполняет эту операцию. Я проверял


Johnmen   (2004-03-12 15:48:00) [3]

ADOQuery1.FieldDefList.Update;   ?


Nikolai_S   (2004-03-12 15:33:00) [4]

Еще вопрос: как динамически выполнить команду "Add all fields", которая имеется в Fields Editor'е?

Так как неизвестно, какие поля будут отображены в ADOQuery, то нужно:
1. закрытому ADOQuery присвоить запрос в ADOQuery.SQL;
2. динамически добавить все поля, которые указаны в запросе ADOQuery.SQL (аналог команды "Add all fields" в Feilds Editor'е);
3. можно добавить некоторое количество дополнительных вычисляемых полей про запас.

Не могу найти в справке как реализовать 2-й пункт.


Nikolai_S   (2004-03-12 15:25:00) [5]


> Johnmen ©

Пол ей. Есть открытый TADOQuery с набором обычных полей (например F1, F2, F3). Пользователь же может добавлять собственные новые поля. Эти поля будут вычисляемыми (FieldKind=fkCalculated). Пользователь, создав, скажем, свое поле, может задать алгоритм его расчета (например F1+F2).

Короче говоря, моя задача: динамически добавлять вычисляемые поля к открытому TADOQuery.


Johnmen   (2004-03-12 15:10:00) [6]

>Пользователь задает алгоритм расчета этого поля

Так пол ейили всё-таки пол я?
Да и алгоритм никакого отношения к количеству не имеет...


Nikolai_S   (2004-03-12 14:47:00) [7]

>Polevi
Я тоже об этом подумал. Попробую


Polevi   (2004-03-12 14:15:00) [8]

>Nikolai_S ©   (12.03.04 12:44) [3]
можно не переоткрывать, а клонировать на клиенте
хотя тоже криво конечно


Nikolai_S   (2004-03-12 12:49:00) [9]

Можно было бы. Но количество этих полей может быть любым. Пользователь задает алгоритм расчета этого поля. Что же их теперь с запасом на 100 или 1000 штук делать? :-)
Хотелось бы не так каряво. Что ж, придется думать, как лучше поступить


ЫЗШКШЕ   (2004-03-12 12:47:00) [10]

нет нету, а почему бы его сразу не создать . а в рантайм визибле менять ..


Nikolai_S   (2004-03-12 12:44:00) [11]

Поле вычисляемое, поэтому нет смысла весь датасет переоткрывать. Это же занимает время - программа будет необоснованно торомозить. Неужели нет выхода добавить вычисляемое поле, не закрывая датасет?


Polevi   (2004-03-12 12:39:00) [12]

к открытому никак


Nikolai_S   (2004-03-12 12:36:00) [13]

Сорри, забыл сказать: добавить поле нужно динамически в RunTime


Наверх

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