Как заполнить текстовое поле, используя dlookup из двух полей со списком после обновления - PullRequest
0 голосов
/ 05 апреля 2020

Я пытаюсь заполнить текстовое поле txtprice, используя cboprod и cboweight в качестве критерия.

Цена - валюта, продукт - текст, а размер - число.

Option Compare Database

Private Sub form_load()
  Me.txtqty = ""

  Dim price As Currency
  price = DLookup([price], "invent", "[product] = & cboprod &" And [size] = txtweight)

  Me.txtprice.Value = price
End Sub

Private Sub cboprod_AfterUpdate()
  DoCmd.Requery
End Sub

Private Sub cboprod_AfterUpdate()
  DoCmd.Requery
End Sub

1 Ответ

1 голос
/ 05 апреля 2020

Первые несколько замечаний:

  • Я полагаю, ваш DLookup никогда не работал хорошо:
    • [price] должен быть представлен в виде строки: "[price]"
    • Ваш параметры для условия должны быть объединены в строку. Они были частью строки.
    • Поскольку product - это строка, значение условия должно быть заключено в ' s.
    • Синтаксис условий был немного испорчен .. .
  • Также не рекомендуется называть поля / объекты как зарезервированные имена: size такое слово.
  • Всегда старайтесь указывать собственность, которую вы хотите использовать явным образом. В этом случае это .Value. Он работает без, но может вызвать проблемы в зависимости от того, какой тип переменной он назначен. Тогда он может быть назначен как объект, на который вы ссылаетесь.
  • Добавьте Option Explicit в верхней части каждого модуля. Это предотвращает использование необъявленных переменных и, следовательно, облегчает отладку.

Я бы инкапсулировал функциональность в подпроцедуре и вызывал ее там, где и когда это необходимо.

Это должно быть тем, что вы хотите :

Option Compare Database
Option Explicit

Private Sub form_load()
  RefreshPrice
End Sub

Private Sub cboprod_AfterUpdate()
  RefreshPrice
End Sub

Private Sub cboprod_AfterUpdate()
  RefreshPrice
End Sub

Private Sub RefreshPrice()
  txtprice.Value = DLookup("[price]", "invent", "[product] = '" & cboprod.Value & "' And [size] = " & txtweight.Value)
End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...