Текущий архив: 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.49 MB
Время: 0.033 c