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

Вниз

как продублировать датасет?   Найти похожие ветки 

 
zunder ©   (2005-02-02 15:02) [0]

есть датасет с запросом и созданными полями (в дизайнере)
как можно продублировать этот датасет если в нем присутствуют вычисляемые поля.
если просто копировать запрос то теряются вычисляемые поля.
есть идея скопировать обработчик для вычисляемых полей и самому создать поле.
может кто-нить подскажет лучшее решение?


 
Соловьев ©   (2005-02-02 15:04) [1]

зачем дубль?
кажется у плюсов есть метод клон и дубликейт...


 
Johnmen ©   (2005-02-02 15:19) [2]

ДатаСет есть результат выполнения запроса.
Что значит "продублировать", "копировать запрос" etc ?


 
msguns ©   (2005-02-02 15:23) [3]

Создать на датасете еще один курсор (Assign)


 
Vlad ©   (2005-02-02 15:24) [4]


> zunder ©   (02.02.05 15:02)  

Копировать данные можно в TClientDataSet например.


 
zunder ©   (2005-02-02 15:41) [5]

Соловьев ©   (02.02.05 15:04) [1]
нашел Clone в делфе, только вот справку по нему не нашел
а что по поводу этого думаешь?
>скопировать обработчик для вычисляемых полей и самому создать поле.


 
Соловьев ©   (2005-02-02 15:44) [6]


> нашел Clone в делфе,

это для АДО, а тебе надо в ФИБах искать.

> скопировать обработчик для вычисляемых полей и самому создать
> поле.

зачем тебе еще дубль?


 
zunder ©   (2005-02-02 16:52) [7]

Соловьев ©   (02.02.05 15:44) [6]
дубль нужен чтобы запрос подправить и поля лишние убрать (по выбору пользователя)


 
Соловьев ©   (2005-02-02 16:53) [8]


> дубль нужен чтобы запрос подправить и поля лишние убрать
> (по выбору пользователя)

подправить в каком смысле?
поля лишние убрать? Columns[i].Visible = false?


 
Sergey13 ©   (2005-02-02 16:54) [9]

2[7] zunder ©   (02.02.05 16:52)
Похоже вроде на удаление гландов электродрелью через... ну ты понял.
Может я и не правильно понял. Поподробнее можно?


 
zunder ©   (2005-02-02 17:20) [10]

Соловьев ©   (02.02.05 16:53) [8]
Датасет создается для формирования отчетов в Excel.
Sergey13 ©   (02.02.05 16:54) [9]
Мне приходит два датасета в одном нужны фильтры в другом список полей, связка таблиц одинаковая.
Соответсвенно я формирую запрос используя эти 2 датасета,
но в некоторых датасетах поля созданы в дизайнере и их нет в запросах полученных мной датасетах, соответственно их нет и в формируемом мной запросе, а они нужны юзеру. Причем такие поля как правило вычисляемые через OnCalcFields. Вот я и думаю как их можно красиво получить в создаваемом мной датасете. Единственное до чего я додумался можно посмотреть в самом начале.


 
Sergey13 ©   (2005-02-02 17:27) [11]

2[10] zunder ©   (02.02.05 17:20)
Ничего не понял.
>Мне приходит два датасета в одном нужны фильтры в другом список полей
Откуда приходит? По тому который с фильтрами (что там за фильтры в датасете?) нельзя сделать список полей?

Может тебе надо просто сформировать динамически новый запрос? Или ХП?


 
zunder ©   (2005-02-02 17:37) [12]

Sergey13 ©   (02.02.05 17:27) [11]
Фильтры в виде параметров (их задают юзеры), новый запрос формирую. Вариант с ХП не катит - слишком много изаменений в проге нужно делать.
Как мне быть с вычисляемыми полями, которые созданы в дизайнере и вычисляются в OnCalcFields?


 
Sergey13 ©   (2005-02-02 17:56) [13]

Честно говоря понял мало.
Еще вариант. CDS или таблица в памяти типа RxMemoryData. Закинь туда то что тебе надо, добавь поля, пробегись циклом и расчитай недостающее.


 
zunder ©   (2005-02-03 08:45) [14]

вообщем мне нужно в полученных датасетах находить вычисляемые поля (OnCalcFields), создавать их в новом датасете и подцеплять обработчик OnCalcFields


 
ЮЮ ©   (2005-02-03 10:28) [15]

[14] - вот ты и написал, что нужно. Теперь дело за реализацией - вперед. См. TFields.Add, TFieldDefs, TxxxField.Create.


 
zunder ©   (2005-02-03 10:57) [16]

ЮЮ ©   (03.02.05 10:28) [15]
Попробовал Assign"ом присвоить FieldDefs из полученного датасета в новый:
dstMain.FieldDefs.Assign( dstFields.FieldDefs );
 // создаем все имеющиеся поля
 for i := 0 to dstMain.FieldDefs.Count-1 do
   dstMain.FieldDefs[i].CreateField(dstMain);
Но при попытке обратится к какому-нить вычисляемому полю прога лажается говорит что - нет такого поля.


 
ЮЮ ©   (2005-02-03 11:13) [17]

FieldDefs, судя по Help-у, только для физических полей. Просканируй dstFields на наличие Calculated полей и добавь такие же в dstMain.Fields


 
zunder ©   (2005-02-03 13:20) [18]

вопрос - "поля лучше добавлять до открытия Датасета или после?"


 
atruhin ©   (2005-02-04 12:53) [19]

На сайте Николая Банникова есть набор компонент UDB - датасет, он позволяет работать в частности через FIB и позволяет содержимое датасета выгрузить в поток и загрузить из потока, всего 2 строки реализуют то что тебе нужно. Правдо непонятно зачем :)



Страницы: 1 вся ветка

Текущий архив: 2005.03.06;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.047 c
6-1103985950
Змей
2004-12-25 17:45
2005.03.06
TWebBrowser


14-1108349822
Думкин
2005-02-14 05:57
2005.03.06
С Днем рождения! 14 февраля


14-1108296080
_RusLAN
2005-02-13 15:01
2005.03.06
Delphi 2005 CD3. Что он содержит


3-1107720718
Vovka_the_Carrot1
2005-02-06 23:11
2005.03.06
Копирование используемого стола в поток


6-1104091390
X3M
2004-12-26 23:03
2005.03.06
Получить кол-во писем на сервере?