Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2005.03.06;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.49 MB
Время: 0.042 c
4-1105958331
IllusoryOrion
2005-01-17 13:38
2005.03.06
WM_NCLBUTTONUP


14-1108648630
Ilya___
2005-02-17 16:57
2005.03.06
подскажите, как можно щелчком на Label, открыть броузер с интерне


14-1108552074
Ega23
2005-02-16 14:07
2005.03.06
Зацепило. Сильно.


11-1090184979
Dmitrii
2004-07-19 01:09
2005.03.06
PaintBox на Panel и


14-1108560872
советчик
2005-02-16 16:34
2005.03.06
Рульный вопрос





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский