Форум: "Базы";
Текущий архив: 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