Автоматическое обновление поля формы на основе 2 определенных записей таблицы

#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. Спасибо за всю помощь.