• ベストアンサー

Access2000 週報のレポート作成

お世話になります 現在Access2000で、営業週報のレポートを作成しています。 営業が毎日入力するデータを一週間毎に週報としてAccessのレポートで出したいのですが、行き詰まってる個所があります。 やりたいことは、 =================== 営業週報 7/5~7/9 山田太郎 ※日付 |※行動 7/5(月) |挨拶 7/6(火) |商談 7/7(水) |見積もり 7/8(木) |見積もり 7/9(金) |納入 ================== ※はフィールド名 ↑のように、ごくごく簡単なレポートです。(説明の為フィールドは省略してあります。) 一週間の日付と、その日に何をしたかという事がわかればOKなんです。しかし、営業も日報を入力しない日というのがありますので、全ての曜日にデータが埋まるこということがなかなかりません。 ここで例えば、7/6(火)の日報がない場合は =================== 営業週報 7/5~7/9 ※日付 |※行動 7/5(月) |挨拶 7/7(水) |見積もり 7/8(木) |見積もり 7/9(金) |納入 ================== 当然ですが、7/6レコードが丸々抜けてしまうのです。 これだとNGなので、7/6日の日報がない場合でも =================== 営業週報 7/5~7/9 ※日付 |※行動 7/5(月) |挨拶 7/6(火) | 7/7(水) |見積もり 7/8(木) |見積もり 7/9(金) |納入 ================== このように日付だけは表示されて 「ああ、7/6はどこも行かなかったのね」 とわかるようにしたいのですが、 何かよい方法はありませんでしょうか? 説明が長くなりましてすみません、 足りない部分があれば補足いたします。 どうぞよろしくお願いします。

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

  • ベストアンサー
回答No.3

VBA を使わないでもできるのかもしれないですが、やはり VBA を使った方が簡単になるように思います。 フォーム上のテキスト0に 2004/08/16 のように日付が入っていてた場合、2004/08/16 ~ 2004/08/20 をテーブル T_日付(日付フィールドが主キー)に追加するなら、例えば Private Sub コマンド4_Click() Dim s As String Dim d As Date Dim i As Integer Dim db As Database Set db = CurrentDb d = CDate(Me.テキスト0) For i = 0 To 4 s = "INSERT INTO T_日付 ( " s = s & "日付 ) " s = s & "VALUES ( " s = s & "#" & Format(d, "yyyy/mm/dd") & "#)" On Error Resume Next db.Execute s On Error GoTo 0 d = DateAdd("d", 1, d) Next i End Sub にようにすればできます。 ( ↑のコードは DAO を使用してますので、VBA のメニューのツール→参照設定で DAO にチェックを入れてください。) 他にも、パラメータクエリーにするとか、いろいろな方法があると思います。

amoamo
質問者

お礼

素晴らしいです!これでなんとかできそうです VBAは初心者なのですが、使いこなせればずいぶん楽になりそうですね。 ご丁寧なアドバイスありがとうございました。

その他の回答 (2)

  • Gin_F
  • ベストアンサー率63% (286/453)
回答No.2

> ↑の部分はやはりVBAを使わないとできない処理でしょうか? 事前に1年分とかの日付のみデータを作成しておいて、期間で抽出してやれば 大丈夫だと思いますよ。 Excelなどを使えば、簡単に作成できますので。

amoamo
質問者

お礼

ご解答ありがとうございます。 そうか、エクセルでも日付の連続データすぐできますもんね。 検討してみます!

回答No.1

(1) 日付だけのテーブルと (2) 日付、行動のフィールドを持つテーブル の二つのテーブルに分け、 (1) と (2) を元にクエリーを作成し、(1) → (2) の向きの外部結合( (1) のレコードを全て含む)にしてやってはどうでしょか。 (1) のレコードを作成するタイミングは、レポートの出力実行時(イベントプロシージャの先頭)とかにし、登録されていない日付だけ登録するようにするなどしなければならないと思います。

amoamo
質問者

お礼

さっそくのご解答ありがとうございます。 さっそく実行してみます!と言いたいのですが・・ >登録されていない日付だけ登録するようにするなどしなければならないと思います。 ↑の部分はやはりVBAを使わないとできない処理でしょうか? 重ね重ねで恐縮ですがよろしくお願いします。

関連するQ&A