Добавлять логику в подформу в Access? - PullRequest
0 голосов
/ 27 марта 2012

У меня есть подформа в Access: enter image description here enter image description here

CopyNo - это комбинированный список, который позволяет мне выбирать из таблицы MovieCopies.Когда я выбираю один, я хочу, чтобы в поле «Название» отображался правильный заголовок фильма, связанный с идентификатором фильма этой копии.Я также хочу, чтобы формат показывал.Когда я выбираю в выпадающем списке DaysRented, если я выбираю 1, а фильм - «Новый», я хочу, чтобы он отображал цену, если он в течение трех дней отображает правильную цену и т. Д.

Я просто не уверенкак придать логику выпадающим спискам.

Если бы кто-нибудь мог указать мне правильное направление, как делать такие вещи в Access 2007, я был бы очень признателен.

Спасибо

1 Ответ

2 голосов
/ 27 марта 2012

Примерно так:

Private Sub cboCopyNo_AfterUpdate()
    If Nz(Me.cboCopyNo, "") <> "" Then
        Me.txtTitle = DLookup("Title", "MovieMaster", "MovieID = " & Me.cboCopyNo)
    End If
End Sub

Private Sub cboDaysRented_AfterUpdate()
   If Nz(Me.cboDaysRented, 0) > 0 Then
      Dim strType as String
      strType = DLookup("[Type]", "MovieMaster", "MovieID = " & Me.cboCopyNo)
      If Me.cboDaysRented = 1 Then
          Me.txtPrice = DLookup("Price1Day", "Price", "[Type] = '" & strType & "'")
      Else
          Me.txtPrice = DLookup("Price3Day", "Price", "[Type] = '" & strType & "'")
      End If
   End If
End Sub

Пара заметок. Некоторые из ваших имен полей являются зарезервированными словами в определенных базах данных, таких как «Тип». Я настоятельно рекомендую вам использовать имена полей, которые не являются зарезервированными словами в Access или SQL-сервере.

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

DLookup использует язык SQL, поэтому ваш синтаксис в третьем аргументе, предложении WHERE, должен соответствовать SQL. Если поле в вашем предложении WHERE - текст / строка, вам нужно использовать одинарные кавычки по обе стороны от значения (как показано выше вокруг переменной strType). Если это числовое поле, вам не нужны кавычки. Если это дата, вам понадобятся хеш-знаки (#).

...