Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / TOP 15 в ListBox динамически / 18 сообщений из 18, страница 1 из 1
16.04.2004, 14:58
    #32484448
Deminik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TOP 15 в ListBox динамически
Чего-то недопонимаю:

Пишу в русурсе листбокса:

Код: plaintext
select top  15  * from myQuery


затем пишу в программе на формопен:

Код: plaintext
1.
2.
3.
dim strsql as string
strsql =  "select top 15  * from myQuery"
mylistbox.rowsource = strsql


тоже нормально работает...добавляю:


Код: plaintext
1.
2.
strsql =  "select top 15  * from myQuery"
strsql = strsql &  " order by [Дата операции]" 
mylistbox.rowsource = strsql


...возвращает все записи...
что я не понимаю ?
...
Рейтинг: 0 / 0
16.04.2004, 15:00
    #32484456
Kelme
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TOP 15 в ListBox динамически
ты в хелпе внимательно почитай про SELECT TOPn , тааам всё написано ;)
...
Рейтинг: 0 / 0
16.04.2004, 15:02
    #32484461
АлексейК
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TOP 15 в ListBox динамически
а так ?

select top 15 * from ( select * from myQuery order by [Дата операции])
...
Рейтинг: 0 / 0
16.04.2004, 15:05
    #32484474
Deminik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TOP 15 в ListBox динамически
В хелпе написано - невозможно в программе...
...
Рейтинг: 0 / 0
16.04.2004, 15:07
    #32484483
Deminik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TOP 15 в ListBox динамически
2 АлексейК

Так работает ! Спасибо.
...
Рейтинг: 0 / 0
16.04.2004, 15:08
    #32484485
АлексейК
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TOP 15 в ListBox динамически
на здоровье
...
Рейтинг: 0 / 0
16.04.2004, 15:09
    #32484487
Kelme
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TOP 15 в ListBox динамически
TOP n [PERCENT] Returns a certain number of records that fall at the top or the bottom of a range specified by an ORDER BY clause. Suppose you want the names of the top 25 students from the class of 1994:
SELECT TOP 25
FirstName, LastName
FROM Students
WHERE GraduationYear = 1994
ORDER BY GradePointAverage DESC;

If you do not include the ORDER BY clause, the query will return an arbitrary set of 25 records from the Students table that satisfy the WHERE clause.

The TOP predicate does not choose between equal values. In the preceding example, if the twenty-fifth and twenty-sixth highest grade point averages are the same, the query will return 26 records
...
Рейтинг: 0 / 0
16.04.2004, 15:11
    #32484493
АлексейК
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TOP 15 в ListBox динамически
2 КилМИ
The TOP predicate does not choose between equal values. In the preceding example, if the twenty-fifth and twenty-sixth highest grade point averages are the same, the query will return 26 records

а причем здесь это ?

здесь Select *
а записи все разные
...
Рейтинг: 0 / 0
16.04.2004, 15:15
    #32484503
Deminik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TOP 15 в ListBox динамически
2 Kelme

Уточняю еще раз - В ПРОГРАММЕ мне нужно...
...
Рейтинг: 0 / 0
16.04.2004, 15:15
    #32484506
Kelme
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TOP 15 в ListBox динамически
там также написано, что если добавить OrderBy то тогда нет никакой гарантии, что возвратится именно то кол-во записей, скока указано, может оказаться и гораздо больше :)
поэтому для SELECT TOP N надо указывать DISTINCT, чтобы уникальные значения отбирались
...
Рейтинг: 0 / 0
16.04.2004, 15:22
    #32484517
АлексейК
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TOP 15 в ListBox динамически
это наверное глюк, только я не помню в какой версии было

даже уникальный ключ в таблице есть все равно список не обрезается top
если задано order by
...
Рейтинг: 0 / 0
16.04.2004, 15:25
    #32484524
Kelme
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TOP 15 в ListBox динамически
скорей всего Access сначала сортирует, а потом уже из отсортированного списка отбирает ;)
...
Рейтинг: 0 / 0
16.04.2004, 15:30
    #32484533
Deminik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TOP 15 в ListBox динамически
авторскорей всего Access сначала сортирует, а потом уже из отсортированного списка отбирает

Он бы все-равно тогда правильно отбирал 15 записей, а так, гад - все возвращает...

Access 2002
Win XP
...
Рейтинг: 0 / 0
16.04.2004, 15:31
    #32484535
Deminik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TOP 15 в ListBox динамически
Кстати, Distinct и Percent - пробовал....
...
Рейтинг: 0 / 0
16.04.2004, 15:51
    #32484577
paparome
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TOP 15 в ListBox динамически
Да!!!

Век живи - век учись :) (это я про себя)

В MSSQL с топом проблем нет
...
Рейтинг: 0 / 0
16.04.2004, 15:54
    #32484584
Kelme
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TOP 15 в ListBox динамически
получается, что TOP корректно работает если выбирается только одно поле из таблицы и указан предикат DISTINCT
...
Рейтинг: 0 / 0
16.04.2004, 16:37
    #32484694
мля
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TOP 15 в ListBox динамически
Да поищите вы по форуму, мля. Че воду толочь.

и не кера не все вертается. А только ВСЕ записи с первыми N значениями подвыборки указанной в ORDER BY. Если всех "Дат операций" - 15, вернутся все записи. (это все равно, как селект * где датаОпер в(селект топ 15 датаОпер фром табла ГРУПП БАЙ датаОпер) фром табла)

2 АлексейК - стыдно-с. :)
...
Рейтинг: 0 / 0
16.04.2004, 17:07
    #32484773
АлексейК
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TOP 15 в ListBox динамически
2 АлексейК - стыдно-с. :)

разве что слегка,
очень давно было и не помню в какой версси аксесса,

глюк не глюк - забылось

но запомнилось что решить задачку
чтоб выбирать ровно столько сколько нужно - надо так:

select top N * from ( select * from mytable order by SortField )

вот и все собственно ...
...
Рейтинг: 0 / 0
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / TOP 15 в ListBox динамически / 18 сообщений из 18, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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