Сортировка записей с учетом регистра в MS Access

В Microsoft Access записи сортируются по возрастанию или по убыванию без учета регистра. Однако при сортировке по кодам ASCII прописные и строчные буквы различаются, что и позволяет выполнять сортировку с учетом регистра. При помощи небольшого трюка можно обойтись и без VBA.

В конструкторе запросов создаем новое поле и пишем в нем:

code: Asc(Left([table]![field];1))

Вспомогательное поле должно стоять в конструкторе запросов ДО сортируемого поля — тогда при сортировке данные будут отсортированы в первую очередь по нему:

Объяснение процесса. table, field — это название таблицы и поля, данные в которых нужно отсортировать. Функция Left() используется для получения первого символа в поле, по которому мы сортируем данные. Функция Asc() возвращает ASCII-код для первого символа. code: — название вспомогательного поля.

MS Access: CDec()

Программа выдает ошибку: «Введенное выражение содержит функцию с неверным числом аргументов». Оказывается, что функция CDec() и не должна работать в запросах… Интересно, а в построителе запросов тогда эта функция зачем отображается, если работает только в VBA?

MS Access: преобразование UNIX time в читаемую форму

Решение может пригодиться, если MS Access подцеплен к MySQL-базе, автоматически подгребает оттуда данные, а время в MySQL в формате timestamp. Преобразование без учета часового пояса (UNIX time — это время по Гринвичу):

( [UNIX time] / 86400 ) + #01.01.1970#

Корректируем время с учетом часового пояса. +4 часа:

( ( [UNIX time] + 14400) / 86400 ) + #01.01.1970#

Добавляем/вычитаем количество секунд в часах: (4*60*60=14400)

Значение свойства LinkMasterFields вызывает ошибку: «Return without GoSub»

При вводе данных в форму базы Access 2007 неожиданно начало появляться сообщение об ошибке:

Значение свойства LinkMasterFields вызывает ошибку: «Return without GoSub»

Парадокс в том, что при вводе данных непосредственно в таблицу сообщение об ошибке не появляется. По-видимому, за время работы в самой базе произошел какой-то сбой. Проблема решилась удалением формы и созданием новой.