過去ログ

                                Page     576
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
   通常モードに戻る  ┃  INDEX  ┃  ≪前へ  │  次へ≫   
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
 ▼クロス集計クエリでの抽出について  春風 04/3/24(水) 13:18
   ┗Re:クロス集計クエリでの抽出について  こうちゃん 04/3/24(水) 15:14
      ┗Re:クロス集計クエリでの抽出について  春風 04/3/25(木) 15:37
         ┗Re:クロス集計クエリでの抽出について  こうちゃん 04/3/25(木) 17:19
            ┗Re:クロス集計クエリでの抽出について  春風 04/3/26(金) 12:01
               ┗Re:クロス集計クエリでの抽出について  こうちゃん 04/3/26(金) 14:35
                  ┗Re:クロス集計クエリでの抽出について  春風 04/3/26(金) 15:40

 ───────────────────────────────────────
 ■題名 : クロス集計クエリでの抽出について
 ■名前 : 春風
 ■日付 : 04/3/24(水) 13:18
 -------------------------------------------------------------------------
   はじめまして、よろしくお願いします。

Accessで、クロス集計クエリをつくり、テストという名前のフォームに「開始」と「終了」のテキストボックスを作成しました。
テストフォームからクエリに飛ばすのですが、日付の範囲を指定して抽出する仕組みがうまく動きません。
参考書籍を元に作っていますが、
抽出条件欄に
Between [forms]![テスト]![開始] And [forms]![テスト]![終了]
を入力した場合に実行すると、
'forms!テスト!開始'を有効なフィールド名、または式として認識できません。
というエラーが表示されます。
これを、例えば
Between #2004/03/01# And #2004/03/31#
と値を入力すれば、きちんとリストを表示してくれます。

原因がわかりませんので、どなたかアドバイスをお願い致します。

VBAに関する質問ではないので、質問が適切かわかりませんが、聞ける場所がなかったので、すいませんが、よろしくお願い致します。

 ───────────────────────────────────────  ■題名 : Re:クロス集計クエリでの抽出について  ■名前 : こうちゃん <nakajima19@hotmail.com>  ■日付 : 04/3/24(水) 15:14  -------------------------------------------------------------------------
   春風さん、こんにちは

>抽出条件欄に
>Between [forms]![テスト]![開始] And [forms]![テスト]![終了]
>を入力した場合に実行すると、
>'forms!テスト!開始'を有効なフィールド名、または式として認識できません。
>というエラーが表示されます。

直接の回答でなくてごめんなさい。

Microsoftのサポート技術情報に以下の情報がありました。

http://support.microsoft.com/default.aspx?scid=kb;ja;408633&Product=accJPN

[AC97] クロス集計クエリーでパラメータを認識できないエラーが発生した場合

クロス集計クエリーは列の名前を動的に生成します。そのため、クエリーを実行するまで、[XXX] がパラメータを参照しているのか、列の名前を参照しているのかを確定することができません。
このエラーを回避するには、[クエリーパラメータ] ダイアログ ボックスに、[XXX]を明示的なパラメータとして定義します。

情報はAccess97のものですが、現象は2000でも2002でも2003でもおなじですので、クロス集計クエリのパラメータにフォームのデータを直接指定はできないと思ったほうがよさそうです。
選択クエリを1つ介在させて、そちらに
Between [forms]![テスト]![開始] And [forms]![テスト]![終了]
を指定して、そのクエリを元にクロス集計クエリをつくったらいかがでしょう。

 ───────────────────────────────────────  ■題名 : Re:クロス集計クエリでの抽出について  ■名前 : 春風  ■日付 : 04/3/25(木) 15:37  -------------------------------------------------------------------------
   レスありがとうございます。

Microsoftのサポート技術情報を確認しました。クロス集計の場合は、できないのですね・・。

選択クエリを介在させる方法も試してみましたが、その方法でも同じようなエラー表示がされてしまいます。

まだ勉強を始めたばかりですが、もう少しがんばって調べてみます。

どうもありがとうございました。

 ───────────────────────────────────────  ■題名 : Re:クロス集計クエリでの抽出について  ■名前 : こうちゃん <nakajima19@hotmail.com>  ■日付 : 04/3/25(木) 17:19  -------------------------------------------------------------------------
   春風さん、こんにちは

>選択クエリを介在させる方法も試してみましたが、その方法でも同じようなエラー表示がされてしまいます。

選択クエリを介在させる方法で試験したうえのレスだったのですが、どんなエラーだったのでしょう?同じエラーですか?
もしかして該当のフォームを開いていないとかということはありませんか?

 ───────────────────────────────────────  ■題名 : Re:クロス集計クエリでの抽出について  ■名前 : 春風  ■日付 : 04/3/26(金) 12:01  -------------------------------------------------------------------------
   レスありがとうございます。

>選択クエリを介在させる方法で試験したうえのレスだったのですが、どんなエラーだったのでしょう?同じエラーですか?
>もしかして該当のフォームを開いていないとかということはありませんか?

1.test1という集計用のクエリをつくり、
Between [forms]![テスト]![開始] And [forms]![テスト]![終了]
の条件で抽出できるようにしました。

2.test2というクロス集計クエリをつくり、その集計元をtest1のクエリにしました。

3.テストのフォームには「開始」と「終了」のテキストボックスをつくり、そこからボタンでtest2のクエリを開くようにしています。

まだ勉強不足なので・・、やっている事が教えて頂いたことと違うかもしれません・・。
間違いがありましたら、ご指摘のほど、よろしくお願いいたします。

 ───────────────────────────────────────  ■題名 : Re:クロス集計クエリでの抽出について  ■名前 : こうちゃん <nakajima19@hotmail.com>  ■日付 : 04/3/26(金) 14:35  -------------------------------------------------------------------------
   春風さん、こんにちは

>1.test1という集計用のクエリをつくり、
>Between [forms]![テスト]![開始] And [forms]![テスト]![終了]
>の条件で抽出できるようにしました。
>
>2.test2というクロス集計クエリをつくり、その集計元をtest1のクエリにしました。
>
>3.テストのフォームには「開始」と「終了」のテキストボックスをつくり、そこからボタンでtest2のクエリを開くようにしています。
>
>まだ勉強不足なので・・、やっている事が教えて頂いたことと違うかもしれません・・。
>間違いがありましたら、ご指摘のほど、よろしくお願いいたします。

ああ、私が勘違いしていたようです。エラーを確認いたしました。
ごめんなさい。

それでは、パラメータを明示的にしてみましょう。
もとのクロス集計クエリをSQLビューで開いて
先頭に以下の1行を追加してください。

PARAMETERS [forms]![テスト].[開始] DateTime,
[forms]![テスト].[終了] DateTime;

で、フォームの開始と終了を入力して、クエリを呼び出してみてください。


念のためSQL全文だとこんな感じ・・
(PARAMETERS文とWHERE文以外は実際の春風さんの作成したものとは違いますよ)

PARAMETERS [forms]![テスト].[開始] DateTime, [forms]![テスト].[終了] DateTime;
TRANSFORM Sum(Q.金額) AS 金額の合計
SELECT Q.社名, Sum(Q.金額) AS [合計 金額]
FROM Q
WHERE (((Q.売上日) Between [forms]![テスト].[開始] And [forms]![テスト].[終了]))
GROUP BY Q.社名
PIVOT Q.材質;

 ───────────────────────────────────────  ■題名 : Re:クロス集計クエリでの抽出について  ■名前 : 春風  ■日付 : 04/3/26(金) 15:40  -------------------------------------------------------------------------
   教えて頂いた文を追加したら、できました!
とても感動しています・・・。

手元の参考書(といっても4冊ですが)を確認してみましたが、このような方法は載っていませんでした。行き詰まっても、解決方法はあるのですね。

教えてもらってばかりで、申し訳ございませんでした。
どうもありがとうございました。

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━    通常モードに戻る  ┃  INDEX  ┃  ≪前へ  │  次へ≫    ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━                                 Page 576