<HOME  <お願い事項   <Access2002 TOP   <Access2000 TOP   <サイト内検索
 Access97データベース工作室>在庫のザの字はどう書くの〜♪
  1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20



で、デザインビューに切り替えるとこんな感じ・・・。
選んだレイアウトによって若干違うと思いますけど、まあ、だいたいこんな構造になってますよね。

大まかな部分で確認いただきたいのは、

レポートヘッダー

ページヘッダー

メーカーヘッダー

詳細

メーカーフッター

ページフッター

レポートフッター

この各セクションがどうなっているか、それぞれのセクションに何が配置されているか、というところです。
もちろん、レイアウトによっては非表示になってるセクションもありますので、今表示されてるセクションだけチェックできればよいでしょう。

その上で、メーカーヘッダーになければならないもの、詳細部分になければならないものなど、選り分けていきます。


で、あたしはこんなふうにしてみました。大きさや位置を変えてみたんですけど、いかがでしょう。

1)メーカー名、住所、連絡先などを、メーカーヘッダーに移動。「注文書」というレポートタイトルもメーカーヘッダーに。

 こうしておけば、メーカーごとに改ページしても、毎ページ同じようなイメージで出てきますよね。

2)「御中」「Tel.」はラベルを利用して作成。右側の自社名および住所も、ラベルを利用して書きました。

 中で改行するときは、Shiftキーを押しながらEnterキーね。

3)金額欄を作成。

 非連結のテキストボックスを作り、コントロールソース欄に=[今回の注文数]*[価格]と明記。

4)メーカーフッターを表示させ、合計金額を計算。

 メーカーフッターが出ていない方は、ツールバーの「グループ化/並べ替え」ボタンをクリック。
 出てきたウィンドウの中でメーカーフッターの表示を設定します。
 [金額]が、Q_注文しまっせクエリーに存在しない、レポートだけのフィールドですよね。

 Sum関数でサマリーすることができないんで、=Sum([今回の注文数]*[価格])で計算します。

5)右上にDate関数を使って、今日の日付が表示されるように、非連結のテキストボックスを作成。

 コントロールソース欄に=Date()。後は書式プロパティで西暦4桁にするとか、工夫をしましょう。

6)必要ないセクションは、高さをゼロに折りたたんでおくか、非表示にする。

 メニューバーの[表示]に、レポートヘッダーフッター、ページヘッダーフッターの表示を切り替えるメニューがあります。

7)メーカーヘッダー部分の「項目見出し」部分に四角を書き、青い色にする。

 メニューバー[書式]に、「最背面に移動」「最前面に移動」というのがあります。
 これを使って、四角を最背面にすれば、まるで背景色がついたようになります。
 ちょっとめんどうですけど、ぜひ挑戦してみてください。キレイなレポート作りのお役に立つと思います。

他にもいろいろいじれるとこありそうですね。工夫してみてください。


と、とりあえず印刷プレビューで確認すると・・・。こんな感じになりました。
ちょうど下の図でいくときみどりの線の部分で、グループが変わることになります。
メーカーフッター部分で改ページするように、プロパティの設定をしてもいいですね。

まあ、ここまで作り込まなくても、表形式のリストを印刷して電話で注文、なんて形でもいいんじゃないかと思います。
こればっかりは、現実の業務形態を無視して作るわけにはいかないんで、どういうレポートが出ればよさそうなもんか、画面とにらめっこじゃなくて、実際の業務内容を見直して検討してみてくださいね。


さて。で、このレポートの印刷を、どっかのフォームからコマンドボタンをクリックしたらとか、そういうタイミングで出力しようと思います。
で、いちおう、印刷したら、[まじ?]を全部Falseにして、「注文書一回出したレコードだよ」ということを書き残します。そのための更新クエリーを作りましょう。

これはしごくカンタン。

とにかく[注文テーブル]の中のレコードを全部Falseにしちゃって問題ないんですよね。
レコードの流れ、もう一度じっくり見直してみてくださいね。

なので、別に抽出条件とかイラナイです。
とにかく、[まじ?]をFalseにする更新クエリー、作ってみてください。


で、Q_注文書発行したらとか、なんか名前をつけて保存します。



で、このクエリーを実行すると・・・。なんかメッセージ出ますね。[はい]の方のボタンをクリックします。
注文テーブルを見ると???全部オフになってます?これで、新しく「注文エントリー」しない限り、注文書は出なくなるわけですよね。

あたしは注文数入力フォームの右下にコマンドボタンを作って、そのクリック時のイベントにコードを書いてみました。

Private Sub コマンド18_Click()

DoCmd.Requery

DoCmd.OpenReport "注文書", acViewPreview

DoCmd.OpenQuery "Q_注文書発行したら"


End Sub

全部マクロをコードにしてるだけなんで、マクロを使ってもいいですね。

いちおう、一番上のリクエリーはおまじないです。
というのも、今回、同じテーブルをダブって使ってクエリーを作ったりしてるんで、一番最後に注文数を入力したレコードがちゃんと認識されないうちに更新クエリー[Q_注文書発行したら]を動かすと、一番最後に注文数を入力したレコードだけロックかかったみたいな状態になっちゃうんですよ。ちょうど、二人の人が同時に同じレコードを引っ張り合うような状態になっちゃう可能性があるんです。

一番最後に注文数を入力したレコード、ちゃんと保存するような配慮をすればいいんですけど、無駄にカーソル移動させたりするのもなにかなーと思って、とりあえずこの再クエリーって命令が一番手っ取り早かったんで、これを利用してみました。フォームの中に表示されてるレコードが再整列するようなイメージになりますから、最後に入力した注文数もちゃんと認識されるし、このレコードもエンピツマーク状態じゃなくて、ちゃんと注文テーブルの一メンバーとしてみとめられることになりますから、[Q_注文書発行したら]を開いても問題ないでしょう。


さて・・・。ずいぶんたくさんクエリー作ってきました。
こういう注文とか売上とかいったタイプのデータベースを作ると、テーブルは2〜3個なのに、それを基にしていろいろなくエリーをたくさん作って組み合わせていく必要が出てきます。

どのクエリーがどの処理のために作ったもので、どのテーブルを基にしているとか、訳が分からなくなってきちゃうこともしばしば。
何かメモ書きしながら進めるとか、すこし工夫した方がよいかもしれませんね。