|
|
|
вот такая хреновая сортировка...
|
|||
|---|---|---|---|
|
#18+
Честное слово, увидал такое впервые. Сразу задумался: либо у меня Аск глючный, либо для него (для Акса) такое положение вещей вполне естественно. Итак, имеется таблица, ну скажем: 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") рекордсет выводится как положено. Подозреваю, что тут дело в каких-то внутренних процессах Акса. Но дабы в дальнейшем не вляпаться в подобное, прошу народ объяснить мне эти грабли. Заранее премного благодарен. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2003, 16:42 |
|
||
|
вот такая хреновая сортировка...
|
|||
|---|---|---|---|
|
#18+
Так а что там объяснять. Где-то в справке даже было написано, что когда Вы открываете recordset на базе таблицы, порядок в котором они будут в этом recordset достаточно произвольный, независящий от исходной таблицы (опр. какими-то внутренн. процессами Access, вообщем ей так удобно открывать и она тебе не обещает открывать его в таком же порядке.) Так что если ты ползаешь по recordset используя их порядковые номера, то у тебя будут расхождения с исх. таблицей. Используй уник. номера или сортируй свой recordset также как и таблицу перед использованием. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2003, 16:52 |
|
||
|
вот такая хреновая сортировка...
|
|||
|---|---|---|---|
|
#18+
Еще раз большое спасибо, но возникает еще один вопрос: как отсортировать рекордсет? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2003, 16:54 |
|
||
|
вот такая хреновая сортировка...
|
|||
|---|---|---|---|
|
#18+
Ну ты уж и сам ответил. И только в конструкции типа Set rst=CurrentDb("SELECT * FROM Table ORDER BY Field1") рекордсет выводится как положено. Можеш воспользоваться свойство Sort объекте Recordset Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. Но первый вариант лучше, т.к. что бы сортировка вступила в силу требует создать второй объект Recordset. Да и в Хелпе советуют Примечание. Во многих случаях быстрее открыть новый объект Recordset с помощью инструкции SQL, включающей условие сортировки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2003, 17:12 |
|
||
|
вот такая хреновая сортировка...
|
|||
|---|---|---|---|
|
#18+
Или вот еще строка из хелпа: "При доступе к объекту Recordset типа таблицы пользователь задает порядок записей с помощью свойства Index объекта." Т.е. если верить этим словам, Набор инструкций: Set MyTable=MyDB.OpenRecordset("Таблица1") MyTable.index = "Field1", отсортирует по полю Field1, конечно, если оно проиндексировано заранее. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2003, 17:45 |
|
||
|
|

start [/forum/topic.php?fid=45&fpage=1757&tid=1679686]: |
0ms |
get settings: |
11ms |
get forum list: |
20ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
48ms |
get topic data: |
14ms |
get forum data: |
3ms |
get page messages: |
57ms |
get tp. blocked users: |
2ms |
| others: | 229ms |
| total: | 392ms |

| 0 / 0 |
