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

Вниз

Как узнать данные записей в TDataSet не перемещаясь по ним?   Найти похожие ветки 

 
Adoon   (2003-12-04 13:15) [0]

Необходимо собрать сведения о некоторых полях записей в TDataSet не перемещаясь по нему, т.е. не смещая указатель с текущей записи
(BookMark не предлагать)


 
Sandman25   (2003-12-04 13:16) [1]

Можно ли узнать значение пятнадцатой записи, не читая ее из БД?


 
Adoon   (2003-12-04 13:23) [2]

Разве при вызове метода Open в компоненте TQuery не считываются все строки, заданные в запросе? т.е. из БД мы считали уже 30 записей, стоим на 15 записи и надо узнать значение поля 20-ой записи


 
Рамиль   (2003-12-04 13:24) [3]

Сделать запрос в другом DataSet и перемещаться там, хотя чем Locate не нравится, например...


 
Sandman25   (2003-12-04 13:29) [4]

>Разве при вызове метода Open в компоненте TQuery не считываются все строки, заданные в запросе?

Не обязательно. Иначе бы не было метода FetchAll


 
Romkin   (2003-12-04 13:33) [5]

Можно использовать Lookup


 
Adoon   (2003-12-04 14:03) [6]

> Сделать запрос в другом DataSet и перемещаться там, хотя чем Locate не нравится, например...

Implements a virtual method for searching a dataset for a specified record and making it the active record.

А активная запись должна оставаться там, где была


 
Digitman   (2003-12-04 14:17) [7]


> BookMark не предлагать


непонятно - почему


 
Sergey_Masloff   (2003-12-04 15:09) [8]

Adoon (04.12.03 13:15)
Вобщем, ты придумал зачем-то извращение и ищешь еще как можно более извращенные пути его реализации. Мигрируй на дотнет. Это там рекордсет теперь как матрица - куда хошь туда и лезь. Я все думал - ну кому это может понадобиться? И зачем это делать единственным способом работы ;-)


 
nik222   (2003-12-04 15:39) [9]

Открывай два одинаковых DataSet - один рабочий оин скрытый
Вот и все решение проблемы


 
Adoon   (2003-12-04 19:16) [10]

to Sergey_Masloff
извращения я не придумывал, я просто столкнулся со следующей проблемой
есть у меня Грид и рядом DBRichEdit в которой вывожу описание записи, при нажатии на какую либо запись мне необходимо кое что просчитать, для чего надо просмотреть даные по нескольким записям, пока я просматриваю эти записи, описание в DBRichEdit меняется, т.к. меняется указатель на текущую запись
Есть несколько решений - 2 DataSet (мне почему то не очень нравится), отключать DBRichEdit от БД временно (тоже плохо)
и т.д. В конечном счете я просто хотел узнать, как без перемешения по записям, узнать их данные


 
Кщд   (2003-12-05 06:50) [11]

не ясно, чем не устраивает схема
1. Bookmark
2. DisableControls
3. Вычисления
4. Bookmark
5. EnableControls


 
ЮЮ   (2003-12-05 06:59) [12]

>мне необходимо кое что просчитать, для чего надо просмотреть даные по нескольким записям

Если эти записи видны в гриде, то можно воспользоваться его DataLink-ом (Гриду тоже мало активной записи, ему тоже нужен доступ ко всем видимым записям и это реализовано с помощью TDataLink)


 
Shirson   (2003-12-05 07:53) [13]

>Adoon

ADO.

Из рабочего DataSet делаешь Clone в промежуточный DataSet(>nik222 открывать два датасета с базы это почти двойная потеря времени. А это, частенько, весьма критично ) и работаешь с ним.


 
NIK222   (2003-12-05 10:26) [14]

Shirson - насчет CLONE, посмотри исходник этого метода.
Там сначала целевой Dataset.close а потом опять Open
Так что по скорости думаю проигрыша не будет,


 
Shirson   (2003-12-05 10:35) [15]

Целевого? :) А нам не пофигу? Тот, с которого он клонируется, метод Clone не трогает.
Целевой потом открывается, и это естественно - как работать с закрытым DataSet? Только данные он уже имеет.
Так что времени тут тратится чуть.

Можешь сам проверить:
Прогнать запрос, который занимает минуты две, а потом результат склонировать в другой DataSet и посмотреть, сколько это займёт времени :)


 
RUYurik   (2003-12-05 10:44) [16]

А почему бы просто не сделать калькулируемое поле? На OnCalcField писать все что нужно сделать


 
MalkoLinge   (2003-12-05 10:46) [17]

Implements a virtual method to retrieve field values from a record that matches specified search values.

function Lookup(const KeyFields: string; const KeyValues: Variant; const ResultFields: string): Variant; virtual;

Description

This function returns a Variant with the value False, indicating that a matching record was not found.

Descendant classes override this method so that it locates the record where the fields identified by the comma-delimited string KeyFields have the values specified by the Variant or Variant array KeyValues. In classes that implement Lookup, it returns a Variant or Variant array that contains the value or values of the fields specified by the comma-delimited string ResultFields on the specified record.



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

Форум: "Базы";
Текущий архив: 2003.12.30;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.009 c
4-99818
volser
2003-11-02 13:50
2003.12.30
Как отловить нажати мыши над системными часами?


14-99770
vopros
2003-12-06 12:56
2003.12.30
Кто нибудь встречался с проблемой виса BDE


4-99812
DillerXX
2003-11-02 18:32
2003.12.30
Кнопка


6-99693
Bart
2003-11-01 21:51
2003.12.30
TCPSERVER - HELP!


1-99533
man
2003-12-16 11:41
2003.12.30
помогите с инст. пакетом





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский