Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Вот такая тема !!!!!!
|
|||
|---|---|---|---|
|
#18+
Мужики вот такой вопрос. Делаю новый проект в C++Builder 5.0 (можно и в Делфях). Ложу на форму комп. Tquery. " Query->SQL->Clear(); Query->SQL->Add("select * from job"); Query->Open(); Query->Close(); " - это реакция на кнопку... Можно как-нить сделать так чтоб он не выбирал все в память когда делаешь Open(). Т.е. типа того что он делает FetchAll() когда запускаешь Query... а мне этого не надо. Надо только первую запись !!!!!!!!!!!!! Select first ... Select top ... не предлагать ... :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.07.2003, 15:20 |
|
||
|
Вот такая тема !!!!!!
|
|||
|---|---|---|---|
|
#18+
Ты че кросспостишь? Задал вопрос - жди ответ (там, где задал). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.07.2003, 15:27 |
|
||
|
Вот такая тема !!!!!!
|
|||
|---|---|---|---|
|
#18+
Я не понял что ты сказал ... А в чем собственно проблема ... Моя тема че не попадает в рамки этого форума ??????????!!!!!!!!!!!!!! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.07.2003, 16:05 |
|
||
|
Вот такая тема !!!!!!
|
|||
|---|---|---|---|
|
#18+
Что такое "первая запись" ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.07.2003, 18:21 |
|
||
|
Вот такая тема !!!!!!
|
|||
|---|---|---|---|
|
#18+
попробуй CursorLocation:=clUseServer он выбирает первую порцию данных, затем по необходимости остальные. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.07.2003, 06:12 |
|
||
|
Вот такая тема !!!!!!
|
|||
|---|---|---|---|
|
#18+
[quot oleg_e] Что такое "первая запись"? [/quot ] Select выбирает N записей. Кстати N в моем случае около 150.000. Так вот а мне надо чтоб мой Query выбрал только 1-ую запись. [quot Maihail] попробуй CursorLocation:=clUseServer [/quot ] К сожалению это только в ADO компонентах. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.07.2003, 08:25 |
|
||
|
Вот такая тема !!!!!!
|
|||
|---|---|---|---|
|
#18+
А что если поколдовать над фразой "select * from job". Нафига тебе запрос который возвращает 150 000 записей? Напоминает сокраментальное "Сами создаем себе трудности, и сами же их мужественно преодолеваем". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.07.2003, 08:37 |
|
||
|
Вот такая тема !!!!!!
|
|||
|---|---|---|---|
|
#18+
>> Так вот а мне надо чтоб мой Query выбрал только 1-ую запись. 1-ая запись в каком смысле? Может в порядке возростания по какому-то полю? А может в порядке их добавления в таблицу? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.07.2003, 12:11 |
|
||
|
Вот такая тема !!!!!!
|
|||
|---|---|---|---|
|
#18+
1-ая запись в каком смысле? Может в порядке возростания по какому-то полю? А может в порядке их добавления в таблицу? Вот смотри ... Есть Селект. "select * from job" или "select job_id, name from job" не важно, хоть как Он выбирает все записи(строки) таблицы Job. Верно ? А мне надо выбрать, например, не все записи, а первую или, например, первые 100 записей. Вот и встал такой вопрос. Выбирать можно как угодно, хоть по возрастанию, хоть по убыванию по любому полю. Я думаю мы оба знаем как это делать. Но как в BDE выбрать только первые N записей ???? Вот. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.07.2003, 12:18 |
|
||
|
Вот такая тема !!!!!!
|
|||
|---|---|---|---|
|
#18+
Если просто надо получить рекордсет со 100 записями, то select top 100 ... А если получить на клиента, то в ADO cluseServer. А умеет ли это TBDEDataSet... ? Вроде ссылок на методы работы с internal буферами, кроме их получения через TDataSet.Buffers нет, так что Вы вряд ли можете на это повлиять. Есть TBDEDataset.BlockReadSize, TBDEDataset.CacheBlobs, но это не то маленько... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.07.2003, 14:12 |
|
||
|
Вот такая тема !!!!!!
|
|||
|---|---|---|---|
|
#18+
Я УСТАЛ УЖЕ ПИСАТЬ !!!!!! SELECT TOP xxx ... SELECT FIRST xxx ... SELECT * from Table where RECNO() =< XXX ЭТО ВСЕ НЕ РАБОТАЕТ !!!! Я бы давно уже так и сделал ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.07.2003, 15:45 |
|
||
|
Вот такая тема !!!!!!
|
|||
|---|---|---|---|
|
#18+
Какая стрктура таблицы? В чем вообще смысл? При каком-нибудь событии выбираем N (N = 1 и более) записей. В следующий раз выбираем следующие N записей. И так далее. Я правильно понял? Можно про задачу вообще узнать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.07.2003, 16:10 |
|
||
|
Вот такая тема !!!!!!
|
|||
|---|---|---|---|
|
#18+
про where почитай ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.07.2003, 16:32 |
|
||
|
Вот такая тема !!!!!!
|
|||
|---|---|---|---|
|
#18+
Начинать надо было с того, какая используется база. У нас сейчас все телепаты в отпуске. В MS SQL, например, понятия "номер записи" не существует. А запуск SELECT TOP 1 без order by может выдавать разные записи - какие там первые в кэше подвернуться. И в дополнение к постингу MPro. И про ORDER BY тоже. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.07.2003, 21:27 |
|
||
|
Вот такая тема !!!!!!
|
|||
|---|---|---|---|
|
#18+
С какой базой работаешь ? Уточню ответ Cat2, сказав что в реляционных базах данных вообще нет такого понятия - номер записи. И вообще, если ты " УСТАЛ УЖЕ ПИСАТЬ !!!!!! ", не писай :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.07.2003, 02:39 |
|
||
|
Вот такая тема !!!!!!
|
|||
|---|---|---|---|
|
#18+
Привет Всем! Спасибо всем за активность. Любую. Описание задачи. БД - BDE. Файл - Job.DB. - Формат "Paradox". Структура таблицы - Два поля Job_id(int), Name(Varchar), Date_work(Date) (Структура не обсуждается - я ее на ходу придумал - рез-т и причины работы от нее не зависят) Кол-во записей - около 250.000. Есть проект на C++ Builder 5.0 (можно и Делфи - нет разницы) с одной формой. На форме также есть одна кнопка и ListBox, например, для вывода результата. (да и TQuery еще) Что мне надо - надо чтоб по нажатию на кнопку Query выбирал по любому условию записи в ListBox. Но так как записей в таблице достаточно много то сам процесс выборки всего займет очень много времени, да и не целесообразно это - 250000 строк в списке пользователю не надо. Т.е. задача усложняется надо выбрать например 100 первых записей, поместить их в ListBox и, например, когда пользователь дойдет до последней строки в ListBox у него выбирается следующая "партия" строк. Вот. Кончено, это было бы просто сделать через TTable - но этот вариант отпадает (по разным причинам). Вот. И мой то вопрос заключается в том: как реализовать эту схему ? Рассмотрим реакции на кнопку. Вариант 1, когда выбираются Селектом все записи и в цикле пишутся первые 100 в ListBox. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. Вы знаете сколько выполняется этот селект с 250000 записями? На Celeron 1200 около 2,5 мин. Вариант 2 . когда выбираются Селектом первые 100 записей и в цикле пишутся все выбранные в ListBox. Код: plaintext 1. 2. 3. 4. 5. 6. Код: plaintext 1. 2. Какие мысли? P.s. надо же сколько с утра энергии .... стока на одном дыхании наПисать ;) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.07.2003, 07:49 |
|
||
|
Вот такая тема !!!!!!
|
|||
|---|---|---|---|
|
#18+
Ну что я могу предложить.... Автомат калашникова! (хе-хе) Надо чтобы Job_id был уникальным полем и индекс по этому полю нужен! Query1 ('select * from job where Job_id between :FromJob_Id to :ToJob_Id') В параметрах указывать диапазон значений. Диапазон можно выбирать приблизительно, например 0..99, 100..199, и т.д. Годится если Job_Id задавался по порядку, если нет то нужно еще: Query2 ('select Job_id from job order by Job_id') Посмотреть сколько времени он выбирет данные. Далее из Query2 выбираешь нужные элементы диапазона. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.07.2003, 11:18 |
|
||
|
Вот такая тема !!!!!!
|
|||
|---|---|---|---|
|
#18+
To: Oleg_e. поверхностно ...... Если бы я сортировал по Job_id, то может быть у меня во это бы и вышло и я бы наверняка в условии просто написал Job_id<100 Job_id ____ Name 1 ывафыва 2 фываываы 3 лдаоаппвапап 4 вапвап 5 вапвап 6 вапывалп 7 ывапвыап ...... ............ N Но у меня может быть любая сортировка (читать выше) и по двум и по трем полям !!! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.07.2003, 14:02 |
|
||
|
Вот такая тема !!!!!!
|
|||
|---|---|---|---|
|
#18+
Если это Paradox через BDE, то не нужно заморчиваться селектами. Используйте прямой доступ. Фильтры по полям кластерного индекса в парадоксе работают очень шустро, а первые 100 записей без проблем отобрать в цикле по курсору и все это будет в секунды. ======== СУБД Paradox умеет оптимизировать запросы, но только написанные не на SQL, а на QBE. Я не знаю тонкостей реализаци BDE, но у меня создается впечатление, что при выполнении селектов идет тупое сканирование всей базы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.07.2003, 19:01 |
|
||
|
Вот такая тема !!!!!!
|
|||
|---|---|---|---|
|
#18+
неверный подход однозначно юзер должен указать по какимлибо признакам что ему конкретно надо непонятно чем listbox лучше dbgrid ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.07.2003, 22:50 |
|
||
|
Вот такая тема !!!!!!
|
|||
|---|---|---|---|
|
#18+
Да, представляю, как будет материться юзер, просмотрев весь список из четвертьмиллиона строк и обнаружив нужную ему запись предпоследней.... На форуме уже много раз поднимался вопрос о том, как удобнее отображать значения справочников. И много раз предлагалось сделать едит с кнопкой, по нажатию на которую вываливалось бы окно с бдгридом, содержащим справочник. Неделю назад меня просили переделать прогу в одной конторе. Просьба была такая - сделать удобнее. Единственное, что потребовалось - переделать отображение справочников с сомбобоксов так, как я сказал выше. Народ очень доволен, говорят, раньше, когда у них некоторые справочники перевалили за 1000 записей, они сходили с ума понемногу :) И еще, лучше использовать dbgridEh, там много всяких фич, можно простенький поиск забабахать и т.д. и т.п. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.08.2003, 02:35 |
|
||
|
Вот такая тема !!!!!!
|
|||
|---|---|---|---|
|
#18+
Мужики. Спасибо всем за ответы. Я думаю много проясниться если вы увидете воочию о чем идет речь. "О чем идет речь" можно скачать по адресу... Это есть версия 1.1 моей программы и то про что я пытался все это время вас спросить есть список решений Самарского Арбитражного Суда, т.е. судебная практика. Я пытался приводить вам простые примеры дабы не загромождать лишним, но видимо не очень это здорово получилось - как-то в другом направлении решались вопросы. Так вот то что тут можно скачать - это http://sas.technova.ru/ ]демоверсия . Там около 100 документов всего. В рабочей же версии есть разделы в которых порядка 5000 документов. Согласен это мрачно, но суть не в этом - это уже не моя задача, а юристов. Вот так. Я щас напишу еще одну тему по этой программе в этом форуме и форуме С++ - если что пишите, отвечайте. Думаю тема будет интересна. Спасибо за внимание. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.08.2003, 08:41 |
|
||
|
Вот такая тема !!!!!!
|
|||
|---|---|---|---|
|
#18+
абсолютно нечего обсуждать таких програм милион и во всех приличных используется поиск, а идея с просмотром всех подряд просто дебильна на уровне просмотра всех сайтов подряд вместо ramblerа или другого поиска ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.08.2003, 13:13 |
|
||
|
Вот такая тема !!!!!!
|
|||
|---|---|---|---|
|
#18+
To mpro Обсуждать как раз есть чего. Читай внимательно !!! "А что такое поиск ?" (философ.) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.08.2003, 14:20 |
|
||
|
|

start [/forum/topic.php?fid=58&fpage=2023&tid=2117468]: |
0ms |
get settings: |
11ms |
get forum list: |
20ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
54ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
77ms |
get tp. blocked users: |
1ms |
| others: | 238ms |
| total: | 424ms |

| 0 / 0 |
