- ベストアンサー
フリー検索結果を単票と帳票で表示させたい
- フリー検索結果を単票と帳票のフォームで表示させたい方法についてアドバイスをお願いします。
- フリー検索結果をアクセス2007の情報データベースで管理していますが、単票フォームで表示するのはレコード数が多くなると困難です。帳票フォームで表示させる方法についてアドバイスをいただきたいです。
- 現在、フリー検索結果を単票フォームで表示していますが、レコード数が多い場合は帳票フォームで表示させたいです。改善方法をご教示ください。
- みんなの回答 (10)
- 専門家の回答
質問者が選んだベストアンサー
> それと「確認ですが」、単票フォームから帳票フォームにすることは可能でしょうか。 変わっていると思います。単票なら帳票 帳票(単票以外)なら単票 という動作です。 Select Case Forms!○○○.DefaultView 現在のDefaultViewの設定を取得 Case 0 単票フォームなら Forms!○○○.DefaultView = 1 DefaultViewの設定を帳票フォームに変更 Case Else 単票フォーム以外なら Forms!○○○.DefaultView = 0 DefaultViewの設定を単票フォームに変更 End Select > フォームは全て単票で作成 > フォームは帳票にしてありまして すみません意味が分かりません。 > フォームは帳票にしてありまして、情報量の多い内容はヘッダーへ移動しています。 ヘッダーの内容は選択しているレコードの内容が表示されていると思います。 フォーム名を何回も記載するの面倒な気もしますので以下のように変更しますか Select Case Forms!○○○.DefaultView のところの○○○を With Forms!○○○ の○○○にコピペしてください。 以降の DefaultViewの前にドットがあります。 DoCmd.RunCommand acCmdDesignView With Forms!○○○ Select Case .DefaultView Case 0 .DefaultView = 1 Case Else .DefaultView = 0 End Select End With DoCmd.RunCommand acCmdFormView
その他の回答 (9)
- kkkkkm
- ベストアンサー率66% (1734/2604)
>「データが重複しないフィールド」「 ID が重複しない」とありますが、テーブルを二通り作るのではなく・ テーブルは現在のテーブルでそこにデータが重複しないフィールドを作成します。そのフィールド名がIDである場合のプロシージャなので「ID が重複しないフィールドだとして考えています。」と記載しました。 テーブルに主キーを設定していればそれが重複しないデータになります。主キーでなくてもフィールドのプロパティでインデックスを重複しないに設定しておけばテーブル内の同じフィールドでデータが重複しないという設定になります。 そのフィールドも含めて現行のクエリに入れ、それぞれのフォームにもそのコントロールを作成します。 新たにフィールドを作成しなくても、現在のフィールド 日時、発生国、分野、内容、WEB でどれかデータが重複しないフィールドがあれば、それを設定しておけばいいです。 Me.ID DoCmd.GoToControl "ID" この2か所のIDを実際の重複しない設定のフィールド名に変更してください。 フォームを開く時にそのフィールドの値を検索して一致したレコードを表示させるようにしているので、データが重複していると違うレコードが最初に表示されることがあるのを防ぐためです。
補足
ありがとうございました。勘違いしておりました。それと「確認ですが」、単票フォームから帳票フォームにすることは可能でしょうか。帳票フォームから単票フォームへの変換はできたのですが、単票フォームからは帳票フォームにできず「単票フォーム(変換後)」に戻ってしまう様です。「帳票へは変換されない・・・」。元に戻ってしまう質問になってしまって申し訳ございません。質問の背景理由、フリー検索で開くフォームは全て単票で作成している為。 質問時の情報が不足していましたが「すいません」、フォームは帳票にしてありまして、情報量の多い内容はヘッダーへ移動しています。 「帳票から単票へ変換できましたコーティング(詳細のレコードが検索対象分だけ表示)」 On Error GoTo ボタン_Click_Err DoCmd.Echo False DoCmd.RunCommand acCmdDesignView Select Case Forms!○○○.DefaultView Case 0 Forms!○○○.DefaultView = 1 Case Else Forms!○○○.DefaultView = 0 End Select DoCmd.RunCommand acCmdFormView DoCmd.Echo True Exit_ボタン_Click: Exit Sub ボタン_Click_Err: DoCmd.Echo True MsgBox "ボタン_Click内で: " & Error$ Resume Exit_ボタン_Click 以上ですが、宜しくお願いします。
- chayamati
- ベストアンサー率41% (260/624)
今晩は、遅くなりました 内容フィールドの移動できましたか 添付図をご覧ください 左枠:デザインビュー 右枠:フォーム 内容の検索キーを「日本」で開いたものです 質問に日付ー時刻とありましたので日付と時刻に分けましたが 時刻は不要かと 右枠の日付をクリックするとその右にカレンダらしきアイコンが表示されます このアイコンをクリックすると入力日の月のカレンダーが表示され、 カレンダー入力となります 追伸 発生国、分野についてこれだけの参照テーブルを作成して 情報データテーブルの発生国、分野にルックアップ定義すると 登録時プルダウンリストからの選択入力が可能になり、入力ミスも減り 現場の作業効率が上がります。 因みに国名は参考URLにあります -------------------------------------------------------------------------------- 情報データ検索クエリは完成していますね、これからフォームを作成します ナビゲーションウィンドの情報データ検索クエリにマウスカーソル移動し、 色が変わったら 作成リボン→その他のフォーム→複数のアイテムで出来上がりです このフォームをデザインビューで開いて 配置リボンのスペース調整、サイズ/間隙を駆使して形を整え 書式リボンの各ツールを駆使して色付けをします
お礼
ありがとうございます。私の情報提供が不足していたと痛感しています。実は、一覧フォーム「データシートビュー」をアドバイスを頂いているフォームへと変更している状況「現在4割変更」にあります。インパクトのある背景色の採用は意味があると思いました。それと、国名コードページを紹介頂きまして、本当にありがとうございます。参考にさせて頂きます。ありがとうございます。
- chayamati
- ベストアンサー率41% (260/624)
フォームのデザインビューで デザインリボンの既存のフィールドの追加ツールでリストで該当のフィールドをフォームフッタへドラッグします。 詳細と重複しますが、問題ありません また詳細のフィールド削除も可 課題が解決しても締めないでください。 詳細は今晩整えて報告します。
お礼
ありがとうございます。ご面倒をおかけして申し訳ございません。
- kkkkkm
- ベストアンサー率66% (1734/2604)
フォームを別々にして対応したい場合はデータが重複しないフィールドを作成して対応してください。 以下のコードでは ID が重複しないフィールドだとして考えています。 情報データ検索結果単票の各イベントプロシージャ(開く時とボタンクリック時) Private Sub Form_Open(Cancel As Integer) If Not IsNull(Me.OpenArgs) Then DoCmd.GoToControl "ID" DoCmd.FindRecord Me.OpenArgs End If End Sub Private Sub 帳票開くボタン_Click() On Error GoTo Err_帳票開くボタン_Click Dim stDocName As String Dim stLinkCriteria As String stDocName = "情報データ検索結果帳票" DoCmd.OpenForm stDocName, , , stLinkCriteria, , , Me.ID DoCmd.Close acForm, Me.Name, acSaveNo Exit_帳票開くボタン_Click: Exit Sub Err_帳票開くボタン_Click: MsgBox "帳票開くボタン内で: " & Error$ Resume Exit_帳票開くボタン_Click End Sub 情報データ検索結果帳票の各イベントプロシージャ(開く時とボタンクリック時) Private Sub Form_Open(Cancel As Integer) If Not IsNull(Me.OpenArgs) Then DoCmd.GoToControl "ID" DoCmd.FindRecord Me.OpenArgs End If End Sub Private Sub 単票開くボタン_Click() On Error GoTo Err_単票開くボタン_Click Dim stDocName As String Dim stLinkCriteria As String stDocName = "情報データ検索結果単票" DoCmd.OpenForm stDocName, , , stLinkCriteria, , , Me.ID DoCmd.Close acForm, Me.Name, acSaveNo Exit_単票開くボタン_Click: Exit Sub Err_単票開くボタン_Click: MsgBox "単票開くボタン内で: " & Error$ Resume Exit_単票開くボタン_Click End Sub
補足
ありがとうございます。「データが重複しないフィールド」「 ID が重複しない」とありますが、テーブルを二通り作るのではなく・・・、どうもイメージが掴めなくて申し訳ございません。もう少しアドバイスをお願いできませんでしょうか。すいません。
- kkkkkm
- ベストアンサー率66% (1734/2604)
単票と帳票を別に作成してボタンで帳票を開くだけでしたらボタンのマクロでフォームを開く(帳票を指示)で実行できます。ただ、帳票で選択したレコードを単票で表示するというのは多少面倒(フィルターで該当レコードのみなら別ですが)だと思います。
お礼
ありがとうございます。この方法は理解できますので、現在、どの方法がよいのか再考中です。
- kkkkkm
- ベストアンサー率66% (1734/2604)
単票と帳票は同じフォームで表示形式を単票か帳票かを選択するだけで変更することができます、デザインモードで既定のビューを変更します。 単票、帳票両方作って切り替えるということも可能ですが、選択しているレコードの位置を保持したまま切り替えた先のフォームを開くのは表示形式を変更するよりは多少手間がかかります。 ですので情報データ検索結果帳票の表示形式を切り替えているだけですので Forms!情報データ検索結果帳票.DefaultView = 1 は Forms!情報データ検索結果単票.DefaultView = 1 です。 ボタンの場合は コマンドボタンのイベントプロシージャに 先のコードを入れてください。 ちなみにイベントプロシージャの構造は(ボタンの場合) Private Sub ボタン_Click() End Sub が一括りとなります。 その中に他の Private Sub ****() EndSub は入らないので注意してください。 Private Sub ボタン_Click() On Error GoTo ボタン_Click_Err DoCmd.Echo False DoCmd.RunCommand acCmdDesignView Select Case Forms!情報データ検索結果単票.DefaultView Case 0 Forms!情報データ検索結果単票.DefaultView = 1 Case Else Forms!情報データ検索結果単票.DefaultView = 0 End Select DoCmd.RunCommand acCmdFormView DoCmd.Echo True Exit_ボタン_Click: Exit Sub ボタン_Click_Err: DoCmd.Echo True MsgBox "ボタン_Click内で: " & Error$ Resume Exit_ボタン_Click End Sub
お礼
ありがとうございます。帳票フォーム「一つのフォームで・・・」を元に単票に切替えて、実現させる方法であることが分かりました。実際にやってみて分かりました。
- kkkkkm
- ベストアンサー率66% (1734/2604)
No1です。 ちなみに帳票単票を切り替えるには(一時的にデザインモードになるのでメニューがちらつきます) ボタンもしくは特定のフィールドのダブルクリックのイベントプロシージャに 日時のダブルクリックなら Private Sub 日時_DblClick(Cancel As Integer) On Error GoTo 日時_DblClick_Err DoCmd.Echo False DoCmd.RunCommand acCmdDesignView Select Case Forms!情報データ検索結果単票.DefaultView Case 0 Forms!情報データ検索結果単票.DefaultView = 1 Case Else Forms!情報データ検索結果単票.DefaultView = 0 End Select DoCmd.RunCommand acCmdFormView DoCmd.Echo True Exit_日時_DblClick: Exit Sub 日時_DblClick_Err: DoCmd.Echo True MsgBox "日時_DblClick内で: " & Error$ Resume Exit_日時_DblClick End Sub 場合によってはデータシートビューと単票の切り替えでも良さそうですが。データシートビューなのでボタンは使えせん(サブフォームにしたら使えます)。 元が帳票だと帳票とデータシートビューの切り替えになるので元の表は単票にしておいてください。 (デザインモードにはなりませんがメニューはモードで切り替わります) Private Sub 日時_DblClick(Cancel As Integer) On Error GoTo 日時_DblClick_Err Select Case Me.Form.CurrentView Case 1 'フォームビューの場合 DoCmd.RunCommand acCmdDatasheetView Case Else '上記以外の場合 DoCmd.RunCommand acCmdFormView End Select Exit_日時_DblClick: Exit Sub 日時_DblClick_Err: MsgBox "日時_DblClick内で: " & Error$ Resume Exit_日時_DblClick End Sub
補足
私が先に判断「帳票フォームを基軸に展開有無・・・」するべきところ、回答を頂きまして本当にありがとうございます。さて、下記のコーティングでトライしてみました結果をご報告させて頂きます。もう一方のコーティングは、まだ試していません「情報データ検索結果単票名と情報データ検索結果帳票名の記入箇所が理解できない為」。 情報データ検索結果単票「日時」ダブルクリックするとパラメーター「検索キーワード入力」が表示され、OKを選択すると「情報データ検索結果単票」が再表示されます。開いた「情報データ検索結果単票」のもう一度「日時」をダブルクリックすると、フォーム「情報データ検索結果単票」がデザインに変わり「情報データ検索結果帳票」が見つかりませんとのダイアログが出ます。 尚、フォーム「情報データ検索結果帳票」はデータシートビューではなく帳票フォームですので、コマンドボタン「他の改善予定のデータベースのテキストボックスでダブルクリックイベントを使っているケースもあり」を使った方法でアドバイスを頂けると嬉しいです。 Private Sub 日時_DblClick(Cancel As Integer) On Error GoTo 日時_DblClick_Err DoCmd.Echo False DoCmd.RunCommand acCmdDesignView Select Case Forms!情報データ検索結果単票.DefaultView Case 0 Forms!情報データ検索結果帳票.DefaultView = 1 Case Else Forms!情報データ検索結果単票.DefaultView = 0 End Select DoCmd.RunCommand acCmdFormView DoCmd.Echo True Exit_日時_DblClick: Exit Sub 日時_DblClick_Err: DoCmd.Echo True MsgBox "日時_DblClick内で: " & Error$ Resume Exit_日時_DblClick End Sub 以上ですが、取り急ぎご報告申し上げます。
- chayamati
- ベストアンサー率41% (260/624)
今晩は 帳票だけではダメですか 内容のフィールドは長文ですね このフィールドをフォームフッタに移動し表示領域を広げます 残りは、1行で収まりますね、余分な空白を詰めます フォームフッタはアクティブの行の内容になります。 ここで編集も出来ます。
補足
早速アドバイスを頂きまして感謝いたします。フィールドを「フォームフッタに移動」する方法を使ったことがなく、軽々な判断は避けたい観点から内容を教えて頂ければと思います。要は使い勝手優先で考えたいと思いますので、宜しくお願いします。ありがとうございます。
- kkkkkm
- ベストアンサー率66% (1734/2604)
検索結果の多少にかかわらず帳票フォームで表示するようにしておくというのは駄目なのでしょうか。 よくある検索とかだと最初に検索結果一覧が出て詳細を見たいところをクリックして詳細画面でそのデータだけを表示するというパターンが多いと思いますが。
お礼
ありがとうございました。 よく分かっていなかった事が分かりました。ご面倒をおかけして申し訳ございませんでした。データ表示の方法はアドバイスを頂い手法で取り組んでみたいと思います。対象数「オブジェクト」が多いことも有りますが、まず、「やってみて、分かって」整理できる様にしたいと考えています。ありがとうございました。