|
大元は下記のようなものなんです。
フォームの検索区分には会員番号、会員名、郵便番号、住所、売上商品名の5つのラジオボタンがあって、ひとつえらんで検索ワードを入れる(例えば住所を選んで新宿)とやると、その下に該当するデータが出てきます。テーブルにはもうひとつ、環境設定というものがあって、それぞれの項目に0から3の番号を割り振り完全検索、前方検索、後方検索、ランダム検索、を指定します。
これを3つの検索区分にして名前を変更するだけの作業で出来るかと思ったのですが、簡単ではなくトラブってました。現在、なんとか検索できるようになったのですが、環境設定を、元々の5つの列から3つタイトルを変えて、残りの2列はいらないので削除したところ、フォームで検索しても結果が返ってこなくなったのです。ですから、いまは環境テーブル上で名前を変更した3つの項目と必要ない郵便番号、住所を残したままの状況です。質問は、下記のコードでMe.部分を3つにしているのに、環境設定のテーブル項目を1つでも削ると検索できなくなるのはなぜか、という点です。宜しくお願いします。
Option Compare Database
Option Explicit
Private Sub Form_Load()
Set Me.Recordset = Nothing
Me.会員番号.ControlSource = ""
Me.会員名.ControlSource = ""
Me.郵便番号.ControlSource = ""
Me.住所.ControlSource = ""
Me.売上商品名.ControlSource = ""
End Sub
Private Sub 検索_Click()
Dim cnn As ADODB.Connection
Dim recN As ADODB.Recordset
Dim recM As ADODB.Recordset
Dim strSQL As String
Dim strSearch As String
Set Me.Recordset = Nothing
Me.会員番号.ControlSource = ""
Me.会員名.ControlSource = ""
Me.郵便番号.ControlSource = ""
Me.住所.ControlSource = ""
Me.売上商品名.ControlSource = ""
On Error GoTo LBL_ERROR
Set cnn = New ADODB.Connection
Set recN = New ADODB.Recordset
Set recM = New ADODB.Recordset
Set cnn = Application.CurrentProject.Connection
strSQL = "SELECT * FROM 会員マスタ "
If IsNull(Me.検索ワード) = False And Len(Me.検索ワード) <> 0 Then
strSearch = "SELECT * FROM 環境設定 WHERE 選択フラグ=1;"
recN.Open strSearch, cnn, adOpenDynamic, adLockReadOnly
If recN.EOF = False And recN.BOF = False Then
strSQL = strSQL & "WHERE " & recN(CInt(Me.検索区分)).Name & " "
Select Case recN(CInt(Me.検索区分))
Case 0
strSQL = strSQL & "='" & Me.検索ワード & "' "
Case 1
strSQL = strSQL & "LIKE '" & Me.検索ワード & "%' "
Case 2
strSQL = strSQL & "LIKE '%" & Me.検索ワード & "' "
Case 3
strSQL = strSQL & "LIKE '%" & Me.検索ワード & "%' "
End Select
End If
recN.Close
End If
strSQL = strSQL & "ORDER BY 会員番号;"
recM.Open strSQL, cnn, adOpenKeyset, adLockReadOnly
If recM.EOF = False And recM.BOF = False Then
Set Me.Recordset = recM
Me.会員番号.ControlSource = recM("会員番号").Name
Me.会員名.ControlSource = recM("会員名").Name
Me.郵便番号.ControlSource = recM("郵便番号").Name
Me.住所.ControlSource = recM("住所").Name
Me.売上商品名.ControlSource = recM("売上商品名").Name
End If
recM.Close
Me.Requery
LBL_EXIT:
Set cnn = Nothing
Set recN = Nothing
Set recM = Nothing
Exit Sub
LBL_ERROR:
Resume LBL_EXIT
End Sub
|
|