Место в памяти, куда возвращает рекордсет результат

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Avtopic
Постоялец
Постоялец
 
Сообщения: 442
Зарегистрирован: 30.09.2005 (Пт) 17:15
Откуда: Tbilisi

Место в памяти, куда возвращает рекордсет результат

Сообщение Avtopic » 05.05.2007 (Сб) 18:41

(Здесь VB > BD поэтому пишу сюда).
Является или нет массивом результат выборки в рекордсет (В зависимости от CursorType и CursorLocation),
и если да, можно или нет найти указатель на данные этого массива, чтобы применить к нему
это http://bbs.vbstreets.ru/viewtopic.php?t=6676
(кому лен пройти по ссылке, скажу что это известная статя GSerg про SAFEARRAY).

маленькое пояснение, для чего это мне нужно:
Выборки в рекордсет занимает N секунд.
Присвоение arre = r.GetRows() занимает K= N/3 сек.
VSFlexGrid1.BindToArray Arre занимает L = N/3 сек
хочется сберечь K (а может бить и L) сек. и имеются еще какие-то идеи.

Ну и наконец добавлю что разговор идет об ADODB Recordset.
Спасибо!

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 05.05.2007 (Сб) 19:04

Никто не знает, является или нет массивом результат выборки в рекордсет.
Вполне возможно, что сейчас он является им и перестанет им являться в ADO 2.9.
Это называется инкапсуляция aka "не лезь внутрь объекта".
Поэтому GetRows - то, что нужно. Если, конечно, вообще нужно помещать данные в массив зачем-то.
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Avtopic
Постоялец
Постоялец
 
Сообщения: 442
Зарегистрирован: 30.09.2005 (Пт) 17:15
Откуда: Tbilisi

Сообщение Avtopic » 05.05.2007 (Сб) 19:35

Спасибо!
GSerg писал(а): ... Если, конечно, вообще нужно помещать данные в массив зачем-то.
Если это вопрос, то
Для таких целей VSFlexGrid имеет BindToArray, LoadArray и DataSource.
Два последних гораздо медленнее, чем GetRows() + BindToArray,
а что касается прямо такого варианта BindToArray GetRows() не катит, Grid пустой, хотя имеет столько же Rows сколько RecordCount, причина наверно в том что BindToArray ссылается на массив а не копирует его.


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: AhrefsBot, Bing-бот и гости: 58

    TopList