Форум: "Базы";
Текущий архив: 2008.07.13;
Скачать: [xml.tar.bz2];
ВнизЗаписи ADOQuery Найти похожие ветки
← →
Lamer666 (2008-02-02 19:19) [0]Уважаемые, подскажите, есть:
ADOQuery есть ли более быстрый способ перебора записей чем через RECORDSET?
AQ.Recordset.MoveFirst;
While AQ.Recordset.EOF=False do begin
...
AQ.MoveNext
end;
← →
Palladin © (2008-02-02 19:26) [1]ага, конечно есть, для наглых беспардонных лоботрясов, которым лень изучать и понимать справочную информацию ado*.chm (да облоботрясничаются они нагло и дальше и пусть я буду последним) сообщаю код для копи пасте
AQ.CursorLocation:=clUseServer;
AQ.CursorType:=ctOpenForwardOnly;
AQ.LockType:=ltReadOnly;
{ AQ.Recordset.MoveFirst; бред наглой лоботрясничающей кобылы}
// While AQ.Recordset.EOF=False жестокий лихорадочный бред наглой лоботрясничабщей кобылы
While Not AQ.EOF do begin
...
AQ.Next
End;
AQ.Close;
← →
MsGuns © (2008-02-02 19:30) [2]recordset - суть фича мелкософтового ADO, а TDataSet - детище Делфи.
Каждый пользует то, что ему больше знакомо и понятно.
Если Вы используете для извлечения данных с сервера делфишный TADOQuery естественным было бы управляться с ним его "родными", датасетовскими (TCustomADODataSet) свойствами, методами и событиями, нежели "стучаться" к нему через рекордсет.
Что же касается скорости.. Самый лучший и радикальный способ ускорения - не извлекать с сервера "лишнюю" информацию, максимально уменьшая "подконтрольную" порцию данных.
Далее. Смотря для чего используется перебор . Если для нахождения записей по какому-то признаку или совокупности признаков, то стОит подумать о дополнительных условиях выборки - априори сервер должен быстрее найти нужные записи, скажем в таблице, чем весьма "толстый" клиент. Для обязательного перебора ВСЕХ записей (например, если все содержимое датасета куда-нибудь выгружается, например на печать), то существенной разницы между рекордсетом и датасетом нет и выбирать нужно лишь руководствуясь принципом удобства, наглядности и сбоеустойчивости кода, а также принятыми корпоративными стандартами.
← →
Lamer666 (2008-02-02 19:31) [3]
> ага, конечно есть, для наглых беспардонных лоботрясов, которым
> лень изучать и понимать справочную информацию ado*.chm (да
> облоботрясничаются они нагло и дальше и пусть я буду последним)
> сообщаю код для копи пасте
Спасибо! Буду читать, сейчас "качшу".
← →
Lamer666 (2008-02-02 19:32) [4]
> MsGuns © (02.02.08 19:30) [2]
СПАСИБО, очень полезное ПРИМЕЧАНИЕ!
← →
MsGuns © (2008-02-02 19:33) [5]>Palladin © (02.02.08 19:26) [1]
Вы не совсем правы - это вовсе не бред. И если сталкиваешься с ADO не в среде делфи, то приходится иметь дело именно с рекордсетом. Отсюда у многих, например, "свистунов" и "васек", не особенно натасканных в дельфях, все пытаться делать через "родные" классы.
← →
Palladin © (2008-02-02 19:39) [6]
> Вы не совсем правы - это вовсе не бред. И если сталкиваешься
> с ADO не в среде делфи, то приходится иметь дело именно
> с рекордсетом. Отсюда у многих, например, "свистунов" и
> "васек", не особенно натасканных в дельфях, все пытаться
> делать через "родные" классы.
ждю не дождюсь примера необходимости работы напрямую с рекорсетом...
АФАИК делфи врапперы прекрасно реализуют функцию NextRecordset, в ином случае не вижу нарекание на врапперы Делфи...
Николя может перестроить мой пример на TADODataSet или вообще на native, но сути это абсолютно не поменяет...
← →
MsGuns © (2008-02-02 19:42) [7]>Palladin © (02.02.08 19:39) [6]
>ждю не дождюсь примера необходимости работы напрямую с рекорсетом...
Например в 1С, где нетути никаких датасетов вообще.
Или при макропрограмминге в MS Office
← →
Palladin © (2008-02-02 19:49) [8]
> [7] MsGuns © (02.02.08 19:42)
стоп... что-то не так в королевстве датском...
ADO это интерфес к OLEDB провайдерам различных БД...
Petr V. Abramov, почти счастливый обладатель моей недоделанной таки утилитой работы напрямую с БД 1С в стиле DBF и MSSQL может запросто сказать что в 1C очень много рекордсетов :) и как бы сама 1С тут вообще ни причем. Насчет MS Office, тут есть целых два продукта Access и Excel, Access имеет самое что нинаесть прямое отношение к OLEDB провайдерам особенно в виде драйвера OLEDB JET X.XX ... с экселем все сложнее, сколько бы эксель нибыл жестко контейнером жестко форматированных данных - никода ему не суждено быть похожим на БД, только приделанные костыли...
так что либо я что то не понимаю в OLE DB провайдерах, либо 1COLEDB таки существует... :)))
← →
MsGuns © (2008-02-02 19:57) [9]Не понял вас ;(
Я говорил о двух разных вещах - RecordSet (ADODB) и TDataSet (Делфи).
"Адошный" делфишный датасет инкарсулирует в себе рекордсет, но никак не наоборот ;)
И еще. Причем тут Акцес или Эксель - я говорю о VBS, встроенном в офис языке, которому пофиг, где его применяют - в акцесе, паинте, эксплорере или экселе (если неправ, то поправьте - буде весьма обязан)
← →
Palladin © (2008-02-02 20:20) [10]А я говорил только об одной вещи, TADODataSet, никаких TDataSet я не касался.
> "Адошный" делфишный датасет инкарсулирует в себе рекордсет,
> но никак не наоборот ;)
Да естественно, разве я утверждал что то обратное?
> И еще. Причем тут Акцес или Эксель - я говорю о VBS,
Хем, дык в том то и дело :) а при чем тут VBS и встроенные в офис языкк вообще, когда идет речь об ADODB применительно к Делфи?
← →
MsGuns © (2008-02-02 20:44) [11]>Palladin © (02.02.08 20:20) [10]
>Хем, дык в том то и дело :) а при чем тут VBS и встроенные в офис языкк вообще, когда идет речь об ADODB применительно к Делфи?
В Вашем посте Palladin © (02.02.08 19:26) [1]
есть фраза:
{ AQ.Recordset.MoveFirst; бред наглой лоботрясничающей кобылы}
Я просто попытался Вам сказать, что вряд ли стОит всех подряд людей, использующих такие методы в Дельфи, крестить в кобыл ;)
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2008.07.13;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.007 c