こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

検索結果の改善

[使用環境]
OFFICE PROFESSONAL 2007

[やっていること(データベースの検索)]
マスターフォームに配置したコマンドボタンで検索結果フォームを開いています。

[やり方(検索の仕方)]
クエリ「テーブル参照」のフィールドに式「Like "*" & [ ◯◯検索 ] & "*"」を設定し、関連付けた検索結果フォームで開きます。

[感じている不具合]
式「Like "*" & [ ◯◯検索 ] & "*"」をOR条件(2フィールド)にした場合、1つの目のパラメーターウインドのみ入力して、2つ目のパラメーターウインドに入力しない時、検索結果フォームに全レコードが表示されます。

[改善したいこと]
1つの目のパラメーターウインドのみ入力した場合、入力エラー「全てのパラメーターウインドに入力して下さい」とかのメッセージを表示できませんでしょうか。「その他、類似な改善方法がありましたらご指導下さい」

[改善したい背景]
使用する人が不特定「2ヶ月に一度は初めて使う人がいる」でもあり使用者本人が目視で確認「再操作行動」が取れるようにしたい。

以上ですが、宜しくお願いします。

投稿日時 - 2018-06-25 20:01:22

QNo.9512075

困ってます

質問者が選んだベストアンサー

> If IsNull(Me![タイトル情報1]) Then
> MsgBox "タイトル情報1が未入力です", vbExclamation
> [Forms]![日記2]![タイトル情報1].SetFocus

If IsNull(Me![タイトル情報1]) Then
の方が変更されていませんのでこちらも変更してみてください。

投稿日時 - 2018-06-30 20:01:14

お礼

ありがとうございました。質問に親身に対応いただきまして感謝しております。前にも申しましたが、スキルが有れば完了「貴方はベストアンサーであると確信」しているものと考えております。とりあえず、コマンドボタンにヒントテキストを用いて対応します。今回のアドバイスを私「自身」の課題として捕らえます。これ以上の質問は本末転倒「アドバイスではなく貴方に全てを依存」しているので、勝手ながら質問は終了とさせて頂きます。本当に有難うございます。

投稿日時 - 2018-07-01 09:33:36

ANo.4

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(4)

ANo.3

コマンドボタンとタイトル情報のテキストボックスは別のフォームにあるのでしょうか。とすれば

Me![タイトル情報1]

[Forms]![フォーム名]![タイトル情報1]
に変更してください。タイトル情報2の方も同じように変更してください。

コマンドボタンのあるフォーム内のサブフォームでしたら
Me![サブフォーム名].Form![タイトル情報1]
に変更してください。

投稿日時 - 2018-06-29 21:07:00

補足

ご報告させていただきます。以下の2通りの記述で確認しましが、[指定した式で参照されているタイトル情報1フィールドが見つかりません。]の表示がでます。私のスキルレベルの問題があると思いますので、この質問を最後にしたいと思います。もし、アドバイスがありましたら宜しくお願いします。


Private Sub コマンド31_Click()
On Error GoTo Err_コマンド31_Click

'パラメーター1とパラメーター2は実際のテキストボックスの名前にしてください。

If IsNull(Me![タイトル情報1]) Then
MsgBox "タイトル情報1が未入力です", vbExclamation
[Forms]![日記2]![タイトル情報1].SetFocus
Exit Sub
ElseIf IsNull(Me![2]) Then
MsgBox "タイトル情報2が未入力です", vbExclamation
[Forms]![日記2]![タイトル情報2].SetFocus
Exit Sub
End If
DoCmd.RunMacro "日記内容を検索するフォーム" 'ここのtestを元のマクロの名前にしてください。
Exit_コマンド31_Click:
Exit Sub
Err_コマンド31_Click:
MsgBox Err.Description
Resume Exit_コマンド31_Click
End Sub



Private Sub コマンド31_Click()
On Error GoTo Err_コマンド31_Click

'パラメーター1とパラメーター2は実際のテキストボックスの名前にしてください。

If IsNull(Me![タイトル情報1]) Then
MsgBox "タイトル情報1が未入力です", vbExclamation
Me![日記2].Form![タイトル情報1].SetFocus
Exit Sub
ElseIf IsNull(Me![2]) Then
MsgBox "タイトル情報2が未入力です", vbExclamation
Me![日記2].Form![タイトル情報2].SetFocus
Exit Sub
End If
DoCmd.RunMacro "日記内容を検索するフォーム" 'ここのtestを元のマクロの名前にしてください。
Exit_コマンド31_Click:
Exit Sub
Err_コマンド31_Click:
MsgBox Err.Description
Resume Exit_コマンド31_Click
End Sub

投稿日時 - 2018-06-30 19:38:07

ANo.2

検索結果フォームを開くコマンドボタンのクリック時をマクロでフォームを開くようにしてるとしたら

コマンドボタンのクリック時での実行をイベントプロシージャにし、開いたウィンドウでプロシージャを以下のようにしてください。

Private Sub コマンドボタンの名前_Click()
On Error GoTo Err_コマンドボタンの名前_Click

'パラメーター1とパラメーター2は実際のテキストボックスの名前にしてください。

If IsNull(Me![パラメーター1]) Then
MsgBox "パラメーター1が未入力です", vbExclamation
Me![パラメーター1].SetFocus
Exit Sub
ElseIf IsNull(Me![パラメーター2]) Then
MsgBox "パラメーター2が未入力です", vbExclamation
Me![パラメーター2].SetFocus
Exit Sub
End If

DoCmd.RunMacro "test"'ここのtestを元のマクロの名前にしてください。

Exit_コマンドボタンの名前_Click:
Exit Sub

Err_コマンドボタンの名前_Click:
MsgBox Err.Description
Resume Exit_コマンドボタンの名前_Click
End Sub

投稿日時 - 2018-06-26 11:30:15

補足

[現状のご報告]
コマンドボタンをクリックすると、[指定した式で参照されているタイトル情報1フィールドが見つかりません。]のメッセージ表示になります。ご面倒をお掛けしますが以下の内容からアドバイスをお願いします。


[現在の設定名称]
・OR条件で参照するテーブルのフィールド名は「タイトル」になっています。

・抽出条件(OR条件)の記述は「Like "*" & [ タイトル情報1 ] & "*" Or Like "*" & [ タイトル情報2 ] & "*"」になっています。
 ※コマンドボタンをクリックした時点で表示されるパラメータウインドの名前は [ タイトル情報1 ] [ タイトル情報2]でよろしいでしょうか。

・コマンドボタン名は「コマンド31」になっています。そして、コマンドボタン「コマンド31」で開くフォームの名前は「日記2」になります。

・コマンドボタンのマクロ名は「日記内容を検索するフォーム」です。

・マクロ名は"日記内容を検索するフォーム"になっています。


[お教えいただいた記述に現状の名前等を書き込んだ内容になります。]

Private Sub コマンド31_Click()
On Error GoTo Err_コマンドボタンのコマンド31_Click

'パラメーター1とパラメーター2は実際のテキストボックスの名前にしてください。

If IsNull(Me![タイトル情報1]) Then
MsgBox "タイトル情報1が未入力です", vbExclamation
Me![タイトル情報1].SetFocus
Exit Sub
ElseIf IsNull(Me![2]) Then
MsgBox "タイトル情報2が未入力です", vbExclamation
Me![タイトル情報2].SetFocus
Exit Sub
End If

DoCmd.RunMacro "日記内容を検索するフォーム" 'ここのtestを元のマクロの名前にしてください。

Exit_コマンド31_Click:
Exit Sub

Err_コマンド31_Click:
MsgBox Err.Description
Resume Exit_コマンド31_Click
End Sub

以上ですが宜しくおねがいします。

投稿日時 - 2018-06-29 20:10:14

ANo.1

検索実行のイベント発生時 (ボタンクリックとか)に、それぞれのパラメーター(テキストボックス?)の値がNULLかどうか調べてからともに入力されていれば検索実行するようにしてはいかがですか。

投稿日時 - 2018-06-26 08:45:49

補足

早速のアドバイスありがとうございます。

[アドバイス内容]
パラメーター(テキストボックス)の値がNULLかどうか調べてから検索実行とありましたが、どの様に対応すればよろしいでしょうか。

[設定の内容]
クエリフィールドの名前「タイトル(列)」の抽出条件の記述は以下の通りです。

Like "*" & [ タイトル情報1 ] & "*" Or Like "*" & [ タイトル情報2 ] & "*"

パラメータ(テキストボックス)に関しての対処が思いつきません。申し訳ございませんがご指導をお願いします。

投稿日時 - 2018-06-26 10:23:38

あなたにオススメの質問