powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / вот такая хреновая сортировка...
5 сообщений из 5, страница 1 из 1
вот такая хреновая сортировка...
    #32250364
zz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Честное слово, увидал такое впервые. Сразу задумался: либо у меня Аск глючный, либо для него (для Акса) такое положение вещей вполне естественно. Итак, имеется таблица, ну скажем:
1
1
1
2
2
3
3
3
3
4
4
4
4
Таблица, ясен пень, отсортирована. На основании ее леплю рекордсет
Set rst=CurrentDb.OpenRecordset("Table")
Вывожу на печать
rst.MoveFirst
Do While Not rst.EOF
Debug.Print rst(0)
Loop
Получаю:
1
1
1
2
2
3
3
4
4
3
3
4
4
Мгум.. Ну ладно. Леплю запрос типа SELECT * FROM Table ORDER BY Field1. Сохраняю и на основе его строю рекордсет. Та же хрень. И только в конструкции типа
Set rst=CurrentDb("SELECT * FROM Table ORDER BY Field1")
рекордсет выводится как положено.
Подозреваю, что тут дело в каких-то внутренних процессах Акса. Но дабы в дальнейшем не вляпаться в подобное, прошу народ объяснить мне эти грабли. Заранее премного благодарен.
...
Рейтинг: 0 / 0
вот такая хреновая сортировка...
    #32250386
Фотография SergeySV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так а что там объяснять. Где-то в справке даже было написано, что когда Вы открываете recordset на базе таблицы, порядок в котором они будут в этом recordset достаточно произвольный, независящий от исходной таблицы (опр. какими-то внутренн. процессами Access, вообщем ей так удобно открывать и она тебе не обещает открывать его в таком же порядке.)

Так что если ты ползаешь по recordset используя их порядковые номера, то у тебя будут расхождения с исх. таблицей. Используй уник. номера или сортируй свой recordset также как и таблицу перед использованием.
...
Рейтинг: 0 / 0
вот такая хреновая сортировка...
    #32250391
zz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Еще раз большое спасибо, но возникает еще один вопрос: как отсортировать рекордсет?
...
Рейтинг: 0 / 0
вот такая хреновая сортировка...
    #32250435
АлексейЕ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну ты уж и сам ответил.

И только в конструкции типа
Set rst=CurrentDb("SELECT * FROM Table ORDER BY Field1")
рекордсет выводится как положено.


Можеш воспользоваться свойство Sort объекте Recordset
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
' Задает порядок сортировки.'
rstOrders.Sort =  "СтранаПолучателя" 
' Создает второй динамический объект Recordset.'
Set rstSorted = rstOrders.OpenRecordset()
' Выполняет операции с набором записей.

.
.
.

rstOrders.Close
rstSorted.Close	

Но первый вариант лучше, т.к. что бы сортировка вступила в силу требует создать второй объект Recordset.
Да и в Хелпе советуют
Примечание. Во многих случаях быстрее открыть новый объект Recordset с помощью инструкции SQL, включающей условие сортировки.
...
Рейтинг: 0 / 0
вот такая хреновая сортировка...
    #32250511
Roalex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Или вот еще строка из хелпа:
"При доступе к объекту Recordset типа таблицы пользователь задает порядок записей с помощью свойства Index объекта."
Т.е. если верить этим словам,
Набор инструкций:
Set MyTable=MyDB.OpenRecordset("Таблица1")
MyTable.index = "Field1",
отсортирует по полю Field1, конечно, если оно проиндексировано заранее.
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / вот такая хреновая сортировка...
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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