Страница: 1 |
Страница: 1 |
Вопрос: DAO обленился
Добавлено: 26.07.10 01:05
Автор вопроса: Dark Engine | Web-сайт:
Вопрос такой, есть таблица типа:
где ID1 - просто внутренний номер, ID2 - идентификатор местоположения (что-то вроде складской базы). В одном местоположении могут лежать несколько предметов.
ID1 раздется случайно. Нужно отсортировать по местоположению, то есть по ID2. Запрос типа
выглядит абсолютно идентично запросу
отсортированному по ID1, что явно ненормально. Вопрос, что нужно изменить в запросе/декларации таблицы или еще чем, чтобы сортировка по ID2 работала?
Система VB 6
DAO v3.6
Ответы
Всего ответов: 9
Номер ответа: 1
Автор ответа:
Artyom
Разработчик
Вопросов: 130
Ответов: 6602
Профиль | | #1
Добавлено: 26.07.10 01:33
Какая база данных использутеся?
Хочешь сказать что запрос
возвращает данные, не отсортированые по ID2? Тогда это какая-то странная проблема.
То что SELECT * FROM Table возвращает отсортированным по какому-то столбцу это не ошибка. В SQL не определено в каком порядке возвращаются строчки, если сортировка не указана в ORDER BY. Поэтому СУБД может возвращать строки в любом порядке, обычно в том порядке, в котором они физически хранятся в базе данных.
Номер ответа: 2
Автор ответа:
Dark Engine
ICQ: 343191665
Вопросов: 51
Ответов: 98
Web-сайт:
Профиль | | #2
Добавлено: 26.07.10 10:02
В смысле, какая база? Создаю обычным DBEngine.CreateDatabase. DAO 3.6. База паролированная, если знать пароль - Аксесс ее открывает.
Проблема и правда странная, я сам слегка обалдел от такого расклада.
Вообще, сортирует обычно все-таки по PRIMARY KEY, если не указано ничего иного. Ну не спроста он - первичный ключ. А, когда указал сортировку по ID2 выдает и правда неотсортированные данные, непонятно почему. Где и что я мог упустить?
Номер ответа: 3
Автор ответа:
Artyom
Разработчик
Вопросов: 130
Ответов: 6602
Профиль | | #3
Добавлено: 26.07.10 14:06
В смысле, какая база?
DAO это интерфейс для доступа к СУБД, а не СУБД. Я спрашивал какая СУБД используется.
Тут так и хочется сказать что select does not brake.
Проверь код, возможно, ты думаешь что в БД отправляется запрос с указанием сортировки, а на самом деле отправляется запрос без сортировки, может напутал где-то.
Номер ответа: 4
Автор ответа:
Dark Engine
ICQ: 343191665
Вопросов: 51
Ответов: 98
Web-сайт:
Профиль | | #4
Добавлено: 26.07.10 14:24
Думал над этим уже. Пришел к подобному выводу. Аксесс при SQL-запросе к той же базе нормально все отсортировал. Но код туп до невозможности. Рекордсет открываю так:
Какие опции надо добавить, чтобы сортировка заработала?
Номер ответа: 5
Автор ответа:
Dark Engine
ICQ: 343191665
Вопросов: 51
Ответов: 98
Web-сайт:
Профиль | | #5
Добавлено: 26.07.10 14:41
Строка подключения к базе
Номер ответа: 6
Автор ответа:
Artyom
Разработчик
Вопросов: 130
Ответов: 6602
Профиль | | #6
Добавлено: 27.07.10 01:49
Вобщем-то никаких, сортировка должна работать...
Номер ответа: 7
Автор ответа:
Arvitaly
ICQ: 301746136
Вопросов: 28
Ответов: 549
Web-сайт:
Профиль | | #7
Добавлено: 27.07.10 01:52
ID2 - число?
Номер ответа: 8
Автор ответа:
Dark Engine
ICQ: 343191665
Вопросов: 51
Ответов: 98
Web-сайт:
Профиль | | #8
Добавлено: 27.07.10 08:59
Вобщем-то никаких, сортировка должна работать...
Вот и я сидел и тихо благим матом ругался.
ID2 - число?
Уважаемый, если посмотреть на декларацию таблицы, можно четко увидеть, что как ID1, так и ID2 имеют тип LONG, длинное целое. Декларация в самом моем первом сообщении.
Номер ответа: 9
Автор ответа:
Dark Engine
ICQ: 343191665
Вопросов: 51
Ответов: 98
Web-сайт:
Профиль | | #9
Добавлено: 27.07.10 10:46
Проблема решена. Я очень извиняюсь, там был реально мой косяк. Да, вначале он реально не сортировал. В рекордсете указал тип Dynaset - стал сортировать, а в таблице все равно выдавал несортированный. А причина была в том, что для получения ай-ди-шников по номеру временно открывал еще один рекордсет и без сортировки, он в итоге по нему и выдавал. Там когда указал - все нормально стало работать.