2016-05-15 2 views
2

У меня есть форма MS Access для ввода заказов на поставку. Это основная форма с общей информацией о заказе - имя поставщика, дата, а затем подформат в представлении данных, где пользователь помещает в фактические упорядоченные предметы. Первое поле в подформе - это поле со списком для выбора элемента, следующее поле - это упорядоченная сумма, а затем автоматически и автоматически вычисляются цены и полные поля.Значение combox не отображается после загрузки vba

Я хотел, чтобы выпадающие списки отображали только товары, принадлежащие поставщику, выбранному в основной форме. Я сделал это успешно со следующим кодом

Private Sub CmbSupplier_Change() 

Me!sfrmOrderDetail.Form!CmbItem.RowSource = "SELECT Items.ID, Items.Product, " _ 
              & "  Items.Supplier" _ 
              & " FROM tblItems" _ 
              & " WHERE ((Items.Supplier)= " _ 
                 & Me.CmbSupplier & ");" 

End Sub 

я положил это также в Form_Current() событийно поэтому он должен повторить это, когда я изменяю к новой записи.

Однако после ввода нескольких заказов я вернулся к предыдущему заказу с помощью кнопки формы, чтобы проверить что-то, что я вошел, и я увидел, что, пока остальная часть информации осталась, поле items (выпадающее поле) на первая запись подформы была пустой. Любые дополнительные строки - были заполнены. Когда я перехожу в это пустое поле с помощью курсора, он «обновляется» и заполняет значение.

Именно поэтому я ясно, например, мой поставщик первого заказа Staples. У меня три ряда в моем подфроме - чернила, степлер, бумага. После окончания записи и возвращаться в, происходит следующее:

  1. чернила не отображается, хотя степлер и бумаги являются также количество чернил, цены и общей.
  2. Когда я нажимаю в поле, он неожиданно показывает, и я вижу список списков со списком, в котором указаны правильные элементы, поэтому код определенно работал.
+1

Это много текста, фактически не доходя до сути. В чем проблема? Не содержит ли таблица 'tblItems' нужные данные? Эта таблица содержит данные, но 'CmbItem' не показывает записи после того, как вы установили свойство' RowSource'? Это работает, но обработчик события не вызывается, когда ожидается, поэтому combobox никогда не обновляется? Пожалуйста, изолируйте ошибку и обновите свой вопрос, чтобы уточнить, где и как мы можем помочь. – Leviathan

+0

Должно ли это быть в Access, лучше будет там соответствующий тег – user3598756

ответ

0

Я абсолютно уверен, что здесь происходит:

  • Вы вернуться к существующей записи
  • Access пытается показать ранее введенный пункт в выпадающем списке, но не может, потому что значение не является частью RowSource
  • поля со списком
  • Тогда Form_Current бежит и изменяет RowSource к текущему поставщику
  • но CmbItem не выбирает, что пока вы не нажмете на нее.

Решение должно быть, чтобы добавить

Me!sfrmOrderDetail.Form!CmbItem.Refresh 

после изменения RowSource.

+0

Спасибо!что объясняет, что происходит! Спасибо за объяснение, и обновление сделало трюк. –

+0

@ K.Lifs: Если ответ решил вашу проблему, вы можете [принять его] (http://stackoverflow.com/help/someone-answers), это также отмечает вопрос как разрешенный. – Andre

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