|
今、顧客データベースを作成しています。
個人情報を蓄積する「tbl個人情報」と、検索の為の「frm検索」フォームと、入力の為の「frm情報入力」フォームが、メインとなっています。
これ以外に、「tbl年賀」テーブルと「tbl担当者」テーブルを持っていて、下のようなリレーションで結ばれています。
[tbl個人情報]]テーブル([顧客ID]が主キー)
[顧客ID][顧客名][顧客住所][・・・etc]
[tbl担当者]テーブル([担当ID]が主キー)
[担当ID][名前]
[tbl年賀]テーブル([発送ID]が主キー)
[発送ID][顧客ID][担当ID][発送年]
⇒[担当ID][tbl年賀]と、[担当ID][tbl担当者]はりレーション
[顧客ID][tbl年賀]と、[顧客ID][tbl個人情報]はりレーションを結び、[tbl年賀]を作る時にルックアップウィザードを使いました。
今、[frm検索」で、[tbl年賀]から、[担当]と[発送年]をコンボボックスにし、例えば「04年に担当Aさんが発送したリスト」を[tbl個人情報]から取り出して、
[frm個人情報表示]フォームに表示させたいと思っています。
ここで、[担当]コンボボックスのプロパティの「データ」/「値集合ソース」に、
SELECT [tbl担当].[担当ID], [tbl担当].[担当] FROM [tbl担当]
とすると、コンボの値には、確かに担当の名前が表示され、選ぶことはできますが、最終的に抽出をするSQLを作った時に、何の関係もなくなってしまいそうです。
[frm検索]フォームには、最終的に選んだ条件を表示させる為の「cmd表示」コマンドボタンを置き、イベントプロシージャで以下のSQLを書きましたが、
動作させると「パラメータ」値を聞いてきてエラーになり、欲しい値が抽出されません。
下に、書いてみた文をペーストしてみます。
コンボの設定と、SQLの書き方が間違っていると思うのですが、どう間違っているのか、どう直したらいいのかが全く分かりません。
長くなってしまって申し訳ありませんが、宜しくお願い致します。
-------------------------------------------------------------
Private Sub cmd表示_Click()
On Error GoTo Err_cmd表示_Click
Dim stDocName As String
Dim strSQL As String
Dim strWhere As String
stDocName = "frm個人情報リスト"
strSQL = "select * from tbl個人情報"
strWhere = ""
If Not IsNull(Me.担当) Then
strWhere = strWhere & " and 担当 = " & Me.担当
End If
If Not IsNull(Me.年) Then
strWhere = strWhere & " and 年 = " & Me.年
End If
If Me.Check = True Then
strWhere = strWhere & " and Check = True "
End If
If strWhere <> "" Then
strWhere = Mid(strWhere, 6)
If DCount("*", "[tbl個人情報]", strWhere) = 0 Then
MsgBox ("該当データはありません。")
Exit Sub
End If
strSQL = strSQL & " WHERE(( " & strWhere & " ));"
End If
DoCmd.Echo False, "個人情報リスト準備中・・・"
DoCmd.OpenForm stDocName, , , , acFormReadOnly
DoCmd.SelectObject acForm, stDocName
DoCmd.Minimize
Forms(stDocName).RecordSource = strSQL
DoCmd.SelectObject acForm, stDocName
DoCmd.Maximize
DoCmd.Echo True
Exit_cmd表示_Click:
Exit Sub
-----------------------------------------------------------------------
Err_cmd表示_Click:
MsgBox Err.Description
Resume Exit_cmd表示_Click
End Sub
|
|