高校三年生の合唱祭で何を歌いましたか?

お世話になります

現在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はどこも行かなかったのね」
とわかるようにしたいのですが、
何かよい方法はありませんでしょうか?

説明が長くなりましてすみません、
足りない部分があれば補足いたします。

どうぞよろしくお願いします。

A 回答 (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 にチェックを入れてください。)
他にも、パラメータクエリーにするとか、いろいろな方法があると思います。
    • good
    • 0
この回答へのお礼

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

お礼日時:2004/08/17 09:28

> ↑の部分はやはりVBAを使わないとできない処理でしょうか?



事前に1年分とかの日付のみデータを作成しておいて、期間で抽出してやれば
大丈夫だと思いますよ。
Excelなどを使えば、簡単に作成できますので。
    • good
    • 0
この回答へのお礼

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

お礼日時:2004/08/17 09:12

(1) 日付だけのテーブルと


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

さっそくのご解答ありがとうございます。
さっそく実行してみます!と言いたいのですが・・

>登録されていない日付だけ登録するようにするなどしなければならないと思います。

↑の部分はやはりVBAを使わないとできない処理でしょうか?
重ね重ねで恐縮ですがよろしくお願いします。

お礼日時:2004/08/16 17:01

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

関連するカテゴリからQ&Aを探す


おすすめ情報