私はMS Accessを初めて使い、基本的なCRMシステムを開発しています。すべてはこれまでのところうまくいっていますが、私の頭が頭に浮かんでいるのは非常に単純な問題です...私はVBSを理解して、一般的にAccessの周りを歩いていますが、どちらの分野の専門家でもありません。アンバウンドコンボボックスを作成するのが難しい
アンバウンドコンボボックスをテーブルの他の値に基づいて特定の値に自動的に設定するにはどうすればよいですか?
私は、従業員の情報を編集するためのフォームを持っています。これには、従業員の部門と支店を入力するためのコンボボックスが含まれています。約10つの部門があり、それぞれに約5つの支店があります。
ブランチコンボボックスは、ブランチIDをtblEmployeeテーブルに保存します。これは、tblBranchテーブルのキーとして機能します。また、tblBranchテーブルにはBranchIDとDivisionIDがあり、DivisionIDはtblDivisionテーブルのキーとして使用されます。基本的にはDivision IDとDivisionNameだけです。
今のところ、Division comboboxはバインドされていません。これは、ユーザーがBranchesコンボボックスを絞り込むことができるためです。ディビジョンコンボボックスをクリックすると、このようにメニューがカスケードされますが、フォームを開くとディビジョンコンボボックスが空白になります(したがって、ブランチコンボボックスも空白になります) )。
ディビジョンコンボボックスの外観を作成してBranchIDが特定の従業員のものであることを確認してから、関連部門に事前設定しますか?
私はバインディングとイベントの両方でこれをやってみましたが、正しく動作するようにはできませんでした。
ありがとうございます!
ありがとう!嬉しいことに、私は一般的に正しい道を歩いていました。しかし、まだ動作していないのですが、私はYourEmployeeIDFieldを理解していないためだと思います。
Private Sub cboDivision_Enter()
Dim sql_ As String
sql_ = "SELECT d.Division " & _
"FROM tblDivision d INNER JOIN (tblBranch b INNER JOIN tblEmployee e ON b.BranchID = e.BranchID) ON d.DivisionID = b.DivisionID " & _
"WHERE e.EmployeeID=" & Me.txtEmployeeID
Me.cboDivision.RowSource = sql_
End Sub
私は物事が誤って除外取得されていないことを確認するためにコンボボックスの選択基準を削除し、次のよう
私のコードです。
私はEmployeeID、e.EmployeeID、txtEmployeeID(フォームのフィールド)、およびMe.txtEmployeeIDを使用してみましたが、大したことはありませんでした。
RowSourceのアプローチを少し調べた後、私は正確に何が欲しいのか説明できなかったのだろうか? (または私はちょうど誤解している)コンボボックスcboDivisionには、tblDivision.Divisionが設定されています。これは必要なものです。しかし、それはバインドされていないので、レコードが自分のフォームにロードされると、cboDivisionは空白になります。バインドされたcboBranchコンボボックスに関連付けられたディビジョンを表示したい(ただし、cboDivisionをクリックすると、選択できるディビジョンの完全なリストが表示されます)。
次のように私が使用しているボタンのコードは、(それが簡略化されたSQLですが、同じ結果があなたのコードで発生)である:
Private Sub Command240_Click()
'Me.cboDivision.Value = 8
Dim sqlStr As String
sqlStr = "SELECT d.DivisionID" & _
"FROM tblDivision d INNER JOIN tblBranch b ON b.DivisionID = d.DivisionID)" & _
"WHERE b.BranchID=" & BranchID
Me.cboDivision.Value = sqlStr
MsgBox ("You clicked me.")
End Sub
コメントアウト「Me.cboDivision。Value = 8 "を指定すると、cboDivisionコンボボックスにDivisionID 8に関連付けられた除算が表示されますが、現在のコードでボタンをクリックすると、コンボボックスが次のように更新されます。" SELECT d.DivisionIDFROM tblDivision d INNER JOIN tblBranch B ON b.DivisionID = d.DivisionID)WHERE b.BranchID = 45"
(一部が最低限で作動されるように端部で45、レコードの正しいBranchIDである)。
依存コンボボックスのRowSourceプロパティを設定するには、おそらくVBAを使用する必要があります。あなたの試みたコードを投稿してください。 – June7
フィルタリングされた結果を特定のIDに取得するには、SQLに何らかのIDを指定する必要があります。フォームがバインドされている場合は 'Me!EmployeeID'を試してください。ここで' EmployeeID'はIDを保持するフィールドの名前です。 –
私は今働くことの面を持っています。私は実際に何をすべきかは、cboDivisionの価値を設定することだと思います。私は、トラブルシューティングのためだけにボタンを使ってテストしています。 「Me.cboDivision.Value = 18」を使用するだけで正常に機能し、DivisionID番号18に関連付けられた部門が表示されました。しかし、私がボタンイベントで任意のSQLコードを使用しようとすると、表示される値はSQLコードです... SQLクエリへの応答ではありません。 –