Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Запрос в теле программы возвращает только 1 запись / 25 сообщений из 26, страница 1 из 2
24.06.2004, 19:06:31
    #32576338
Katarina_kiev
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос в теле программы возвращает только 1 запись
Умоляю помогите!
Запрос в теле программы возвращает только 1 запись, запрос как объект базы данных точно такой же - больше.

Как сделать чтобы запрос в программе возвращал реальное кол-во записей?

Спасибо заранее!
...
Рейтинг: 0 / 0
24.06.2004, 19:14:14
    #32576346
Alexander Popov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос в теле программы возвращает только 1 запись
Что то не совсем понятно.
И запрос можно опубликовать.
...
Рейтинг: 0 / 0
24.06.2004, 19:18:24
    #32576353
Katarina_kiev
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос в теле программы возвращает только 1 запись
Запрос ЭЛЕМЕНТАРНЫЙ
Set q = db.CreateQueryDef("", "SELECT * FROM priluki") - в теле программы и

SELECT * FROM priluki текст запроса.

в базе - 160 000 записей.

Так вот в программе RecordCount = 1.

я уже устала бороться. Запрос был с параметрами сначала, потом я методом исключения искала ошибку. и нашла...
...
Рейтинг: 0 / 0
24.06.2004, 19:28:45
    #32576364
Alexander Popov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос в теле программы возвращает только 1 запись
С recordCount свои заморочки лучше попробуй проверить количество записей
через rs.EOF
+ Поиск по форуму по ключевому слову RecordCount
(много интересного)
...
Рейтинг: 0 / 0
24.06.2004, 19:40:38
    #32576379
Лифчик
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос в теле программы возвращает только 1 запись
Если на основе запроса формируется рекордсет, то в свое время умные люди подсказали мне сделать rst.movelast, а потом rst.movefirst. Тогда RecordCount показывает правильное количество записей
...
Рейтинг: 0 / 0
24.06.2004, 19:41:45
    #32576380
Владимир Саныч
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос в теле программы возвращает только 1 запись
ЛифчикЕсли на основе запроса формируется рекордсет, то в свое время умные люди подсказали мне сделать rst.movelast, а потом rst.movefirst. Тогда RecordCount показывает правильное количество записей
Но эта операция требует времени, поэтому стОит взвесить, нужен ли этот RecordCount.
...
Рейтинг: 0 / 0
24.06.2004, 19:42:47
    #32576381
katarina_kiev
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос в теле программы возвращает только 1 запись
EOF = false

даже если я говорю курсору пойти на 54677 запись...

но мне нужно поочереди просмотреть строки из этого запроса...
что делать?
...
Рейтинг: 0 / 0
24.06.2004, 19:45:04
    #32576384
katarina_kiev
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос в теле программы возвращает только 1 запись
с походом сначала в конец а потом в начало - работает...

и жело тут не во времени...
просто через задний проход как-то...
некрасивенько и неаккуратненько!
...
Рейтинг: 0 / 0
24.06.2004, 19:49:00
    #32576388
Владимир Саныч
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос в теле программы возвращает только 1 запись
katarina_kievEOF = false

даже если я говорю курсору пойти на 54677 запись...

но мне нужно поочереди просмотреть строки из этого запроса...
что делать?
Я обычно пишу так:

set rs=...
if not rs.bof then
do until rs.eof
...
rs.movenext
loop
end if
rs.close

Никакой recordcount здесь не нужен.
...
Рейтинг: 0 / 0
24.06.2004, 19:53:26
    #32576392
katarina_kiev
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос в теле программы возвращает только 1 запись
спасибо большое!

я даже не надеялась на такой быстрый и классный ответ!

спасибо!
...
Рейтинг: 0 / 0
24.06.2004, 19:53:44
    #32576393
Владимир Саныч
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос в теле программы возвращает только 1 запись
:^)
...
Рейтинг: 0 / 0
24.06.2004, 20:12:03
    #32576403
Лифчик
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос в теле программы возвращает только 1 запись
Ну а я теперь буду писать примерно так: ...24/06/04 19:49 Саныч подсказал мне...итд
...
Рейтинг: 0 / 0
24.06.2004, 20:15:16
    #32576405
Владимир Саныч
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос в теле программы возвращает только 1 запись
ЛифчикНу а я теперь буду писать примерно так: ...24/06/04 19:49 Саныч подсказал мне...итд
А как же ты писал до сих пор??? Неужели так:

set rs=...
if not rs.bof then
rs.movelast
n=rs.recordcount
rs.movefirst
for i=1 to n
...
next
end if
rs.close

???
...
Рейтинг: 0 / 0
24.06.2004, 20:24:17
    #32576410
(c)VIG
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос в теле программы возвращает только 1 запись
авторset rs=...
if not rs.bof then
rs.movelast
n=rs.recordcount
rs.movefirst
for i=1 to n
...
next
end if
rs.close
???
Саныч, ты зря смеешься. Не самый плохой вариант.И во многих случаях гораздо более быстрый.
...
Рейтинг: 0 / 0
24.06.2004, 20:25:15
    #32576414
Владимир Саныч
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос в теле программы возвращает только 1 запись
Я не смеюсь. Я только спросил у Лифчика, писал ли он... ну и далее по тексту.
...
Рейтинг: 0 / 0
24.06.2004, 20:47:42
    #32576433
Лифчик
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос в теле программы возвращает только 1 запись
Саныч, долго искал, зачем мне RecordCount точный понадобился. Оказывается, в одном месте деляю ReDim одного массива на основании точного значения. А зачем это - самому теперь надо разбираться. Забыл :( Но в обычных ситуациях RecordCount конечно не нужен, достаточно знать, что он >0
...
Рейтинг: 0 / 0
24.06.2004, 20:54:53
    #32576438
Владимир Саныч
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос в теле программы возвращает только 1 запись
ЛифчикСаныч, долго искал, зачем мне RecordCount точный понадобился. Оказывается, в одном месте деляю ReDim одного массива на основании точного значения. А зачем это - самому теперь надо разбираться. Забыл :( Но в обычных ситуациях RecordCount конечно не нужен, достаточно знать, что он >0
Да нет, с этим все понятно. Ты мне скажи, чем тебя так поразил мой пост от 19:49.
...
Рейтинг: 0 / 0
24.06.2004, 20:57:36
    #32576442
(c)VIG
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос в теле программы возвращает только 1 запись
Зато теперь Лифчик может писать
" до 24/06/04 19:49 и после 24/06/04 20:24 я писал... "
...
Рейтинг: 0 / 0
24.06.2004, 21:09:38
    #32576449
Лифчик
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос в теле программы возвращает только 1 запись
Саныччем тебя так поразил мой пост от 19:49.
Поразил тем же, чем и автора топика авторя даже не надеялась на такой быстрый и классный ответ!

Ты даешь ответ сразу более глубокий, потому что знаешь, чего челу надо (телепатия) В данном случае ты дал наводящий вопрос: СанычНо эта операция требует времени, поэтому стОит взвесить, нужен ли этот RecordCount., из ответа на который понятно, что автору сам RecordCount не нужен. Это мастерство-с
...
Рейтинг: 0 / 0
24.06.2004, 21:11:52
    #32576450
Geo
Geo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос в теле программы возвращает только 1 запись
Кстати, Лифчик прав:
help a97Свойство RecordCount не показывает, сколько записей содержится в динамическом или статическом объекте Recordset до обращения ко всем записям. После обращения к последней записи набора значение свойства RecordCount становится равным полному числу неудаленных записей в объекте Recordset или TableDef. Для принудительного обращения к последней записи следует вызвать для объекта Recordset метод MoveLast. Кроме того, определить примерное число записей, которые будут возвращены в запросе, позволяет функция Count языка SQL.

Примечание. Заполнение с помощью метода MoveLast объекта Recordset при его открытии отрицательно сказывается на быстродействии. Если точное определение значения свойства RecordCount не требуется сразу после открытия объекта Recordset, рекомендуется подождать, пока объект Recordset будет заполнен в результате выполнения остальной программа, а уже потом обращаться к свойству RecordCount.
...
Рейтинг: 0 / 0
24.06.2004, 21:12:38
    #32576451
Владимир Саныч
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос в теле программы возвращает только 1 запись
Чего только не узнаешь о себе...
...
Рейтинг: 0 / 0
24.06.2004, 21:15:29
    #32576453
Владимир Саныч
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос в теле программы возвращает только 1 запись
А я все кручу в голове (циклом) вот это:

(c)VIGНе самый плохой вариант.И во многих случаях гораздо более быстрый.
Не могу понять, когда так может получиться.
...
Рейтинг: 0 / 0
24.06.2004, 21:17:35
    #32576457
Geo
Geo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос в теле программы возвращает только 1 запись
В случае, если действительно надо узнать кол-во записей, movelast пожалуй будет работать быстрее, чем movenext:loop.
...
Рейтинг: 0 / 0
24.06.2004, 21:18:50
    #32576458
Владимир Саныч
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос в теле программы возвращает только 1 запись
GeoВ случае, если действительно надо узнать кол-во записей, movelast пожалуй будет работать быстрее, чем movenext:loop.
Нет сомнения.
...
Рейтинг: 0 / 0
24.06.2004, 21:55:31
    #32576467
(c)VIG
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос в теле программы возвращает только 1 запись
Владимир СанычА я все кручу в голове (циклом) вот это:

(c)VIGНе самый плохой вариант.И во многих случаях гораздо более быстрый.
Не могу понять, когда так может получиться.
Да все просто. В конструкции
do while not rs.EOF
.....
loop
на каждой итерации проверяется значение свойства EOF обьекта Recordset
А обращение к свойству операция более медленная чем чтение значения переменной. На больших обьемах данных потери в производительности могут достигать 25-30%.
...
Рейтинг: 0 / 0
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Запрос в теле программы возвращает только 1 запись / 25 сообщений из 26, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]