Nano Hash - криптовалюты, майнинг, программирование

VBA: не позволяет мне изменить RecordSource другой формы в Microsoft Access

Я работаю над базой данных, которая содержит и отображает курсы для сотрудников, у каждого сотрудника есть другая дата, когда он или она должны снова пройти определенный курс. Я сделал несколько таблиц, которые содержат всю информацию. Я могу отобразить информацию в форме, эта форма содержит несколько кнопок, которые позволяют мне выбирать между различными запросами. Все запросы выводят данные одного типа в одной и той же форме. Для удобства я буду называть эту форму FormA.

Все это прекрасно работает, но несколько часов назад я добавил кнопку, которая позволит мне обновить информацию об определенной записи. Это обновление происходит в другой форме, назовем ее FormB. В старой ситуации я использовал определенную форму для каждой тренировки, но считал, что это всегда неэффективно. Я сделал форму, которая может отображать информацию о каждом запросе. Проблема, с которой я сталкиваюсь, заключается в том, что всякий раз, когда я нажимаю кнопку для обновления определенной записи. Он всегда отображает информацию о верхней записи в запросе/форме. Я застрял на этом в течение нескольких часов, и я просто не могу заставить его работать. Если я вручную установлю RecordSource FormB на правильный запрос, все будет работать так, как должно. Но это требует от меня сделать много одинаковых форм.

Я постараюсь связать весь код, который я считаю актуальным. Если что-то еще нужно, пожалуйста, скажите об этом.

Код, используемый для кнопки обновления, расположенной на FormA:

Private Sub btnUpdate_Click()
Dim stDocName As String


If Forms!FormA.RecordSource = "QryFG" Then

  stDocName = "FormB"

  ' we open first the form:
  DoCmd.OpenForm stDocName, , , "peoplesoftnr = " & Me!PeopleSoftNr

  ' we then set up it's RecordSource:
  Forms!FormB.RecordSource = "QryFG"

End If

Это утверждение if повторяется пять раз для всех разных тренировок, они все одинаковы, поэтому я не буду включать их в этот пост.

Код заполняет мои текстовые поля в FormB. Но он всегда выбирает лучший рекорд. Даже когда я нажимаю кнопку, которая не находится в той же строке (FormA). Когда я комментирую следующую строку:

' Forms!FormB.RecordSource = "QryFG":

И вручную установите QryFG в качестве источника записи для FormB, он делает то, что должен делать. Но при этом мне придется создать много одинаковых форм. Я надеюсь, что есть лучший способ сделать это. Заранее спасибо за ваше время и усилия. Мой родной язык не английский, поэтому, пожалуйста, не обращайте внимания на орфографические и грамматические ошибки ;).

Спасибо еще раз!

Джоэри Роммерс


Ответы:


1

Установив источник записи формы, вы перезаписываете фильтр, который вы ранее установили в DoCmd.OpenForm, поэтому он показывает все записи QryFG, начиная с первой.

Есть несколько способов обойти это, например.

' Open without filter
DoCmd.OpenForm stDocName
' Limit recordsource to current record
Forms!FormB.RecordSource = "SELECT * FROM QryFG WHERE peoplesoftnr = " & Me!PeopleSoftNr

или установите фильтр после изменения источника записи:

DoCmd.OpenForm stDocName
With Forms(stDocName)
    .RecordSource = "QryFG"
    .Filter = "peoplesoftnr = " & Me!PeopleSoftNr
    .FilterOn = True
End With

Если при этом форма «мерцает», вы можете открыть ее с помощью WindowMode:=acHidden, а затем установить для нее значение .Visible = True после изменения RecordSource/Filter.

09.08.2016
  • Оба решения работают отлично! Спасибо большое, вы меня спасли! 09.08.2016
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

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

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..