#ms-access
#ms-access
Вопрос:
Я все еще новичок в access, и хотя я понимаю основы (таблицы, запросы, формы, VBA и теперь немного SQL), это, вероятно, простое решение, но мне нужно поле в форме для автоматического отображения определенной записи поля на основе двух критериев, предпочтительно без запуска запроса на обновление.
Я попробовал приведенный ниже код в поле, однако я совершенно уверен, что он совершенно не подходит для того, что мне нужно сделать.
=IIf([Admin - update Log].[Date Live]>="") AND ([Admin - update Log].[Version]>="")
В основном, «Домашняя» форма должна автоматически отображать номер последней «Версии» на основе последней «Текущей даты». Вероятно, это просто для любого, кто использует access / sql больше месяца.
Комментарии:
1. Поскольку номера ваших версий имеют одинаковую длину и имеют префикс с начальными нулями,
DMax
вы должны иметь возможность корректно извлекать последнюю версию даже путем сортировки по коду символа ASCII в каждой позиции. Можете ли вы опубликовать некоторые примеры данных?2. К сожалению, поле ‘version’ на самом деле является текстовым полем, что означает, что DMax не будет работать, и мне пришлось бы создать пользовательскую функцию, как советовал @Gustav, но пример того, что должно отображаться, находится здесь . На основе этого изображения номер версии, который должен отображаться в домашней форме, равен 01.67.013
3. Как уже отмечалось, поскольку номера ваших версий имеют одинаковую длину с начальными нулями,
DMax
будет работать, и при использовании базы данных, заполненной вашими образцами данных, пример кода Gustav для меня работает нормально.4. Вы полностью правы, теперь у меня все работает, мне просто нужно было правильно изменить источник управления (ошибка новичка)
Ответ №1:
Если вы можете найти последнюю дату в реальном времени с помощью этого выражения:
=DMax("[Date Live]","[Admin - update Log]")
затем вы можете использовать это, чтобы найти последнюю версию:
=DMax("[Version]","[Admin - update Log]","[Date Live] = DMax('[Date Live]','[Admin - update Log]')")
Комментарии:
1. Спасибо за быстрый ответ, я попробовал это в построителе выражений, и он все равно вернул первое значение. Я немного изменил его, чтобы добавить функцию ‘onload’ на случай, если это была простая проблема с обновлением формы, но это также не удалось. =OnLoad (DMax («[Версия]», «[Журнал обновлений администратора]», «[Дата в режиме реального времени] = DMax (‘[Дата в режиме реального времени]’, ‘[Журнал обновлений администратора]’)»)) Кажется, это поле непреклонно, оно хочет отображать только первую запись для версии
2. Не могу сказать, извините, но если «первое» значение является самым новым, все в порядке. Но не совсем ясно, что вам нужно, и нет
OnLoad
возможности использовать.3. Извините, следовало бы сформулировать, что в терминологии access ошибка, которую я получаю, заключается в том, что даже при добавлении выражения отображается первое поле для версии (01.01.001), например, правильный номер в настоящее время равен (01.02.027), который является 37-м / 42-м полем для ‘Version’. Мне потребовалось бы всего несколько секунд, чтобы обновить вручную, если бы я использовал метку, однако я предпочитал автоматизацию на случай, если обновление метки ускользнет от моего ума.
4. О, но эти номера версий являются текстовыми . Потребуется пользовательская функция для сортировки их так, как вы, вероятно, ожидаете: сначала первая часть (01), затем вторая часть и, наконец, третья часть (027).
5. Это имеет смысл, думаю, я пока буду придерживаться ручного обновления ярлыков, пока не стану более уверенным в Access. Спасибо за всю помощь.