Microsoft Access Club Access超初心者対象Forum Access初級者対象Forum Access初・中級者対象Forum Access VBA Tips Forum DAO、ADO、SQL Forum

     

リストへもどる

投稿記事の一括表示

タイトルフォームで絞込み検索した値をクエリに反映
記事No171930
投稿日: 2017/07/18(Tue) 17:59
投稿者sanakan
OS:Windows7
Access Version: 2013

Access初心者です。過去ログ等で調べましたが解決出来ない為、質問させて下さい。

大元の顧客情報テーブルから必要な項目を抽出したクエリ「Q申請」があります。
◇フィールド名:「年」「月」「住所」「申請者」「所有者」「土地面積」「用途」

上記7項目を任意に入力(テキスト・コンボボックス混在しており一部未入力も容認)して条件に合致した情報をリストボックスに表示するフォーム「F検索」があります。
その検索結果をレポートに出力する為に「Q検索結果」を作り、抽出したのですが何故か最初の一行しか抽出できません。
入力した項目に該当する情報を全件クエリに反映させるためにはどのようにすれば良いでしょうか?

前任者が作成した為詳細を理解できていない所が多数あり、大変分かり難い説明と思いますがどうぞよろしくお願いします。


◇「Q検索結果」SQLビューの内容
SELECT Q申請.年, Q申請.月, Q申請.住所, Q申請.申請者, Q申請.所有者, Q申請.土地面積, Q申請.用途
FROM Q申請
WHERE (((IIf(IsNull([Forms]![F検索]![年]),True,[年]=[Forms]![F検索]![年]))=True)
AND ((IIf(IsNull([Forms]![F検索]![月]),True,[月]=[Forms]![F検索]![月]))=True)
AND ((IIf(IsNull([Forms]![F検索]![住所]),True,[住所]=[Forms]![F検索]![住所]))=True)
AND ((IIf(IsNull([Forms]![F検索]![申請者]),True,[申請者]=[Forms]![F検索]![申請者]))=True))
AND ((IIf(IsNull([Forms]![F検索]![所有者]),True,[所有者]=[Forms]![F検索]![所有者]))=True)
AND ((IIf(IsNull([Forms]![F検索]![土地面積]),True,[土地面積]=[Forms]![F検索]![土地面積]))=True)
AND ((IIf(IsNull([Forms]![F検索]![用途]),True,[用途]=[Forms]![F検索]![用途]))=True);

下記HPを参考に作成
https://support.microsoft.com/ja-jp/help/881390


◇VBA
Private Sub 検索_Click()
Dim strWhere As String

'年
year.SetFocus
If year.Text <> "" Then
If strWhere <> "" Then
strWhere = strWhere & " AND 年='" & year & "' "
Else
MsgBox "住所を指定してください。"
End If
End If


'月
month.SetFocus
If month.Text <> "" Then
If strWhere <> "" Then
LCase (月)
strWhere = strWhere & " AND 月='" & month & "' "
Else
MsgBox "年を指定してください。"
Exit Sub
End If
End If


'住所
addressTxt.SetFocus
If addressTxt.Text <> "" Then
strWhere = "住所 Like '" & addressTxt & "' "
End If


'申請者
applyTxt.SetFocus
If applyTxt.Text <> "" Then
If strWhere <> "" Then
strWhere = strWhere & " AND 申請者 LIKE '" & applyTxt & "*'"
Else
strWhere = "申請者 LIKE '" & applyTxt & "*'"
End If
End If


'所有者
ownerTxt.SetFocus
If ownerTxt.Text <> "" Then
If strWhere <> "" Then
strWhere = strWhere & " AND 所有者 LIKE '" & ownerTxt & "*'"
Else
strWhere = "所有者 LIKE '" & ownerTxt & "*'"
End If
End If


'面積
area.SetFocus
If area.Text <> "" Then
If strWhere <> "" Then
strWhere = strWhere & " AND 面積='" & area & "' "
Else
MsgBox "住所を指定してください。"
End If
End If


'用途
use.SetFocus
If use.Text <> "" Then
If strWhere <> "" Then
strWhere = strWhere & " AND 用途='" & use & "' "
Else
MsgBox "住所を指定してください。"
End If
End If


If strWhere <> "" Then
searchResults.RowSource = "SELECT Q申請.年, Q申請.月, Q申請.住所, Q申請.申請者, Q申請.所有者, Q申請.土地面積, Q申請.用途 FROM Q申請" & strWhere & ""
End If


If strWhere <> "" Then
Me.RecordSource = "SELECT Q申請.年, Q申請.月, Q申請.住所, Q申請.申請者, Q申請.所有者, Q申請.土地面積, Q申請.用途 FROM Q申請" & strWhere & ""
End If


If searchResults.ListCount < 2 Then
MsgBox "該当する項目が見つかりません", vbOKOnly
End If

End Sub

- 以下のフォームから自分の投稿記事を修正・削除することができます -
処理 記事No パスワード

ページの先頭へ 前ページへ戻る