Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Работа с данными

Страница: 1 |

 

  Вопрос: DAO обленился Добавлено: 26.07.10 01:05  

Автор вопроса:  Dark Engine | Web-сайт: www.wentas.2bb.ru | ICQ: 343191665 
Вопрос такой, есть таблица типа:
Table (ID1 LONG NOT NULL PRIMARY KEY, ID2 LONG, Data TEXT)

где ID1 - просто внутренний номер, ID2 - идентификатор местоположения (что-то вроде складской базы). В одном местоположении могут лежать несколько предметов.
ID1 раздется случайно. Нужно отсортировать по местоположению, то есть по ID2. Запрос типа
SELECT * FROM Table ORDER BY ID2

выглядит абсолютно идентично запросу
SELECT * FROM Table

отсортированному по ID1, что явно ненормально. Вопрос, что нужно изменить в запросе/декларации таблицы или еще чем, чтобы сортировка по ID2 работала?
Система VB 6
DAO v3.6

Ответить

  Ответы Всего ответов: 9  

Номер ответа: 1
Автор ответа:
 Artyom



Разработчик

Вопросов: 130
Ответов: 6602
 Профиль | | #1 Добавлено: 26.07.10 01:33
Какая база данных использутеся?

Хочешь сказать что запрос
  1. SELECT * FROM Table ORDER BY ID2

возвращает данные, не отсортированые по ID2? Тогда это какая-то странная проблема.

То что SELECT * FROM Table возвращает отсортированным по какому-то столбцу это не ошибка. В SQL не определено в каком порядке возвращаются строчки, если сортировка не указана в ORDER BY. Поэтому СУБД может возвращать строки в любом порядке, обычно в том порядке, в котором они физически хранятся в базе данных.

Ответить

Номер ответа: 2
Автор ответа:
 Dark Engine



ICQ: 343191665 

Вопросов: 51
Ответов: 98
 Web-сайт: www.wentas.2bb.ru
 Профиль | | #2
Добавлено: 26.07.10 10:02
В смысле, какая база? Создаю обычным DBEngine.CreateDatabase. DAO 3.6. База паролированная, если знать пароль - Аксесс ее открывает.
Проблема и правда странная, я сам слегка обалдел от такого расклада.
Вообще, сортирует обычно все-таки по PRIMARY KEY, если не указано ничего иного. Ну не спроста он - первичный ключ. А, когда указал сортировку по ID2 выдает и правда неотсортированные данные, непонятно почему. Где и что я мог упустить?

Ответить

Номер ответа: 3
Автор ответа:
 Artyom



Разработчик

Вопросов: 130
Ответов: 6602
 Профиль | | #3 Добавлено: 26.07.10 14:06
Dark Engine пишет:
В смысле, какая база?

DAO это интерфейс для доступа к СУБД, а не СУБД. Я спрашивал какая СУБД используется.

Тут так и хочется сказать что select does not brake.

Проверь код, возможно, ты думаешь что в БД отправляется запрос с указанием сортировки, а на самом деле отправляется запрос без сортировки, может напутал где-то.

Ответить

Номер ответа: 4
Автор ответа:
 Dark Engine



ICQ: 343191665 

Вопросов: 51
Ответов: 98
 Web-сайт: www.wentas.2bb.ru
 Профиль | | #4
Добавлено: 26.07.10 14:24
Думал над этим уже. Пришел к подобному выводу. Аксесс при SQL-запросе к той же базе нормально все отсортировал. Но код туп до невозможности. Рекордсет открываю так:
  1. Set rsHardWare = MainBase.OpenRecordset("SELECT * FROM Table ORDER BY ID2")

Какие опции надо добавить, чтобы сортировка заработала?

Ответить

Номер ответа: 5
Автор ответа:
 Dark Engine



ICQ: 343191665 

Вопросов: 51
Ответов: 98
 Web-сайт: www.wentas.2bb.ru
 Профиль | | #5
Добавлено: 26.07.10 14:41
  1. Set MainBase = DBEngine.OpenDatabase(AppPath + "BaseBaseR.mdb", False, False, ";PWD=" + BaseKey)

Строка подключения к базе

Ответить

Номер ответа: 6
Автор ответа:
 Artyom



Разработчик

Вопросов: 130
Ответов: 6602
 Профиль | | #6 Добавлено: 27.07.10 01:49
Вобщем-то никаких, сортировка должна работать...

Ответить

Номер ответа: 7
Автор ответа:
 Arvitaly



ICQ: 301746136 

Вопросов: 28
Ответов: 549
 Web-сайт: okazani.ru
 Профиль | | #7
Добавлено: 27.07.10 01:52
ID2 - число?

Ответить

Номер ответа: 8
Автор ответа:
 Dark Engine



ICQ: 343191665 

Вопросов: 51
Ответов: 98
 Web-сайт: www.wentas.2bb.ru
 Профиль | | #8
Добавлено: 27.07.10 08:59
Artyom пишет:
Вобщем-то никаких, сортировка должна работать...

Вот и я сидел и тихо благим матом ругался.

Arvitaly пишет:
ID2 - число?

Уважаемый, если посмотреть на декларацию таблицы, можно четко увидеть, что как ID1, так и ID2 имеют тип LONG, длинное целое. Декларация в самом моем первом сообщении.

Ответить

Номер ответа: 9
Автор ответа:
 Dark Engine



ICQ: 343191665 

Вопросов: 51
Ответов: 98
 Web-сайт: www.wentas.2bb.ru
 Профиль | | #9
Добавлено: 27.07.10 10:46
Проблема решена. Я очень извиняюсь, там был реально мой косяк. Да, вначале он реально не сортировал. В рекордсете указал тип Dynaset - стал сортировать, а в таблице все равно выдавал несортированный. А причина была в том, что для получения ай-ди-шников по номеру временно открывал еще один рекордсет и без сортировки, он в итоге по нему и выдавал. Там когда указал - все нормально стало работать.

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам