2013-12-05 5 views
0

У меня есть проблема, что я шел по кругу с в Access 2010. Представьте себе таблицу с этими столбцами:Access 2010 запросов с помощью параметра и сортировки

Имя Дата Время

Теперь у меня есть запрос, который просит пользователя ввести дату начала и дату окончания и возвращает все записи, которые находятся между этими двумя датами. Это прекрасно работает. Однако, как только я добавляю сортировку в столбец «Дата», все идет не так. После того, как вы поместите сортировку в столбец с параметром, пользователю будет предложено ввести параметр дважды. Из того, что я смог узнать, это нормальное (хотя и раздражающее) поведение в Access.

Если я добавлю столбец «Дата» во второй раз и покажу столбец с сортировкой и не показываю столбец с параметром, он отлично работает. Запрос будет выглядеть так:

Имя Дата (показано & отсортированный) Дата (не показан & параметров) Время

Теперь, когда я запускаю запрос все работает хорошо, и выходит так, как я хочу его. Очевидно, это было бы отличным решением. Однако есть еще одна проблема. Когда я сохраняю запрос, оставляю и снова открываю запрос, два столбца объединяются друг с другом. Таким образом, изменение теряется, и пользователь снова видит два входа.

Мой вопрос: что я могу сделать по-другому для достижения желаемых результатов?

Некоторые возможные вещи, которые я думал о том, но не знают ответ на это:

Есть ли способ сделать это так, столбцы не сливаться? Должен ли я использовать форму с полями ввода и брать данные из этого (я бы предпочел не делать этого, поскольку для обработки различных вещей, которые я делаю в базе данных, потребуется много дополнительной работы). Есть ли какая-то очевидная вещь, которую я пропускаю?

Спасибо за любые предложения.

FYI: Вот SQL из запроса

ВЫБРАТЬ Intentions.Intention, Intentions.MassDate, Намерение [Время Запрошенного] Намерение [Место Запрошенного], [Намерения предлагаемого], Intentions.Completed...
ОТ намерениях
ГДЕ (((Intentions.MassDate) между [Enter даты начала] И [Введите дату окончания]))
ORDER BY Intentions.MassDate, намерения [Время Запрашиваемые].

ответ

1

Верно, что иногда Query Designer в Access будет «реорганизовывать» запрос при его сохранении. Тем не менее, я не помню случая, когда такая реорганизация фактически сломала что угодно.

Для чего это стоит, следующий запрос, кажется, делает то, что вы желаете.После сохранения и повторного открытия он выглядит и ведет себя так же:

DateQuery.png

Для справки, SQL за ней

PARAMETERS startDate DateTime, endDate DateTime; 
SELECT NameDateTime.Name, NameDateTime.Date, NameDateTime.Time 
FROM NameDateTime 
WHERE (((NameDateTime.Date) Between [startDate] And [endDate])) 
ORDER BY NameDateTime.Date DESC , NameDateTime.Time DESC; 
+0

Теперь я совершенно запутался. Я создал фиктивную базу данных, такую ​​как ваша, и она отлично работала. Затем я вернулся в настоящую базу данных и внезапно работал. Поэтому, чтобы убедиться, что я не мечтал об этом, я вернулся к копии базы данных, которую я сделал вчера. Проблема все еще происходила там. Поэтому я посмотрел на запрос. SQL из более ранней базы данных был идентичен SQL из более поздней. Насколько я знаю, я не выполнял никаких изменений, которые я сделал, и внесенные изменения не были связаны с этим запросом или таблицей. Мне придется продолжать изучать это. – user3071597

-1

Я была такая же проблема, и я обнаружил причину : Если после выполнения запроса сортируйте столбец в сетке результатов и скажите «да», чтобы сохранить изменения в запросе, действие сортировки будет сохранено с запросом. Это приведет к тому, что запрос будет выполняться дважды. Сначала нужно создать результат, а затем еще раз сортировать. Поэтому вам придется дважды задавать параметры.

РЕШЕНИЕ: Запустите запрос (дважды введите ваши параметры ;-)). Затем удалите Сортировку, щелкнув символ AZ-eraser на панели задач выше (в отсеке сортировки).

Затем откройте запрос в режиме разработки и добавьте порядок сортировки в соответствующую колонку. Твой выбор хорош.

С уважением Яна

Смежные вопросы