電子書籍の厳選無料作品が豊富!

一応過去質問を調べましたがうまくいかず、よろしくお願いします。

3種類のテーブルをもとに、それぞれについて3種類のクロス集計を行い、
その3つのクエリを一つのクエリにしました。この選択クエリを作る際は、
*をドラッグして全てのフィールドを表示させています。
そのクエリをレコードソースとして、
空のラベル、テキストボックスを必要数置いて以下のようにレポートを作成しましたが、うまくいきません。
どなたか、ご指導ください。

Private Sub Report_Open(Cancel As Integer)
Dim db As DAO.Database
Dim qd As DAO.QueryDef
Dim cnt As Integer
Dim fld As DAO.Field

Set db = CurrentDb()
Set qd = db.QueryDefs(Me.RecordSource)
For cnt = 1 To qd.Fields.Count - 1
Set fld = qd.Fields(cnt)
Me("Label" & cnt).Caption = fld.Name
Me("Field" & cnt).ControlSource = fld.Name

Next
End Sub

A 回答 (7件)

> また、なぜかはわかりませんが、データソースのクエリを変更したりすると「システムで予約されているエラー(-3007)です。

このエラーに対するメッセージはありません」となったりもします。

Access 2000/2002 エラーメッセージ一覧
http://www.f3.dion.ne.jp/~element/msaccess/AcRes …

上記によると、
「ライブラリ データベース <データベース名> を開くことができません。」
というエラーらしいですね。

クエリに含まれるテーブルはリンクテーブルですか。

新規のMDBファイルで、テーブル、クエリ、レポートを一らか作り直したらどうなりますか。
    • good
    • 0
この回答へのお礼

お返事遅くなりました。
テーブルから作り直したら、うまくいきました。
ありがとうございます。

お礼日時:2012/05/04 20:59

> 知識不足で申し訳ありませんが、「どのコードで」というのは、


> どういうことでしょうか?

エラーがでたときに、エラーメッセージのダイアログの「デバッグ」ボタンをクリックするとエラーの発生したコードが選択表示されますので、その選択表示されているコードを教えてください。

この回答への補足

ありがとうございます。このメッセージの場合、「OK」と「ヘルプ」しかありません。
また、なぜかはわかりませんが、データソースのクエリを変更したりすると「システムで予約されているエラー(-3007)です。このエラーに対するメッセージはありません」となったりもします。このメッセージに対しても、なにかご存じであれば教えてください。

補足日時:2012/04/02 04:54
    • good
    • 0

> 「" を有効なフィールド名、または式として認識できません」


> というエラーが起こります。

どのコードでそのエラーが発生しますか。

この回答への補足

知識不足で申し訳ありませんが、「どのコードで」というのは、
どういうことでしょうか?

もとの質問に提示してあるものは、そのままの状態です。

補足日時:2012/04/01 21:16
    • good
    • 0

> ”データがありません”メッセージは出ません。


> レポートヘッダーには、クエリと同じレコード数が表示されます。

これも問題なしですか。
うーん、難しい。

簡単にサンプルを作成してテストしてみましたが問題なく動作します。

ひょっとするとファイルが壊れているのかも。

新規のデータベースファイルを作成して、一から作り直してみたらどうなりますか。

この回答への補足

hatena1989さん
いろいろ忙しく、この件について遠ざかっていました。
あらためて、クエリを作り直し、やってみたところうまく表示されました。
しかし、いろいろやっているうちに、レポートを表示させようとしたところ、
「" を有効なフィールド名、または式として認識できません」
というエラーが起こります。

申し訳ありませんが、またご教授願いますでしょうか?

補足日時:2012/04/01 15:03
    • good
    • 0
この回答へのお礼

hatena1989さん

いろいろ親身にありがとうございます。
自分なりに、また試してみます。
また、何かありましたらよろしくお願いします。

お礼日時:2012/03/11 07:56

> クエリを直接開いた場合は、データはただしく表示されます。


> メッセージボックスも表示されます。

うーん、ならば、
レポートの「からデータ時」のイベントプロシージャを下記のように設定して、

Private Sub Report_NoData(Cancel As Integer)
MsgBox "データか有りません"
End Sub

レポートヘッダーにテキストボックスを配置して、コントロールソースを

=Count(*)

と設定して

レポートを開くとメッセージは表示されますか。
また、レポートヘッダーには、クエリとレコード数と同じ値が表示されますか。

この回答への補足

何度もありがとうございます。

”データがありません”メッセージは出ません。
レポートヘッダーには、クエリと同じレコード数が表示されます。

すみません、よろしくお願いします。

補足日時:2012/02/26 19:09
    • good
    • 0

> 出力結果としては、表題とデータともに何も表示されません。



クエリを直接開いた場合は、データが表示されますか。

また、イベントプロシージャの先頭に下記のような Msgbox のコードを挿入して、レポートを開いたときに、メッセージは表示されますか。

Private Sub Report_Open(Cancel As Integer)
MsgBox "レポートを開きます"

この回答への補足

クエリを直接開いた場合は、データはただしく表示されます。
メッセージボックスも表示されます。

補足日時:2012/02/26 15:18
    • good
    • 0

どのようにうまくいかないのでしょうか。



希望の結果と異なる出力になるのでしょうか。
その場合は、ソースのデータはどのようなもので、希望の出力結果はどのようなもので、実際の出力結果はどのようなものだったのか説明ください。

あるいは、エラーがでるのでしょうか。
その場合は、エラーメッセージをご提示ください。

この回答への補足

ありがとうございます。

出力結果としては、表題とデータともに何も表示されません。

ソースデータは、3つのクロス集計クエリ(成績点数、成績評定、欠課時数をそれぞれ科目について集計したもの)
をまとめて1つのクエリにしたものです。
このクエリを表示させると、もとのクロス集計のデータがすべて表示され、生徒ID、クラス、氏名、科目1の点数、科目2の点数、・・・、生徒ID、クラス、氏名、科目1の評定、科目2の評定、・・・、生徒ID、クラス、氏名、科目1の欠課、科目2の欠課、・・・となります。

現段階では、掲載のコードで、点数だけでも表示させてみようかとやってみたところです。

もしかして、もとのソースデータの形式がよくないのだとすれば、根本的にやり方が間違っているのでしょうか?

最終的には、クラスごとに、各生徒の点数、評定、欠課時数を各科目ごとに表示させたレポートを1枚にまとめたモノを
出力したいと思っています。

よろしくお願いします。

補足日時:2012/02/26 08:48
    • good
    • 0

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