2012-03-27 9 views
0

私はAccessでサブフォームを持っている: enter image description here enter image description hereAccessでサブフォームにロジックを追加していますか?

CopyNoは私がMovieCopiesテーブルから選択することができますコンボボックスです。 1つを選択すると、タイトルフィールドに、そのコピーのムービーIDに関連付けられている正しいムービータイトルが表示されます。私はまた、フォーマットを表示したい。私がDaysRentedコンボボックスから選択すると、1を選択して映画がNewである場合、価格を表示することができます.3日間は正しい価格を表示します。

私はちょっとわかりませんコンボボックスに論理を与える。

誰かがAccess 2007でこのようなことを正しく行う方法を教えていただけたら、本当にありがたいです。

おかげで、このような

答えて

2

何か:

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句の第3引数の構文はSQLと一致する必要があります。 WHERE句のフィールドがtext/stringの場合は、値の両側に単一引用符を使用する必要があります(strType変数の上に示したように)。数字フィールドの場合は、引用符は必要ありません。日付の場合は、ハッシュ記号(#)が必要です。

関連する問題