VBAでクロス集計クエリの表示


━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
vol142

これならわかるマイクロソフトアクセス活用法
            -->VBAでクロス集計クエリの表示
              
発行者:高内 章治 2011年8月24日
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
┏ 今日の内容 ━━━━━━━━━━━━━━━━━━━━━━━━┓

┃【01 - ご挨拶    】
┃【02 - トピックス  】VBAでクロス集計クエリの表示

┃【03 - 編集後記    】

┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛

─────────────────────────────────
【01 - ご挨拶    】          
─────────────────────────────────

こんにちは、高内(こうない)です。

今回は、

「VBAでクロス集計クエリの表示」

についてお話したいと思います。




─────────────────────────────────

【02 - トピックス】: VBAでクロス集計クエリの表示

─────────────────────────────────

前回、「クロス集計クエリ」をフォームに表示する方法を説明しました。

でも、クエリでクロス集計すると、左の列の制限があります。
また、データが多くなってくると、データの表示に時間がかかる可能性があります。

条件を設定して、必要なデータだけ、フォームのサブーフォームにクロス集計のデータに表示する方法を説明します。

VBAを使用します。

ボタンのクリック時に、次のようなVBAを書きます。
実際に開発しているプログラムのデータです。

何をやっているか説明します。
プログラムの番号と対応しています。

  1. 上の条件の部分は、全部入れていませんが、一部入れています。
    これは、LIKEを使って抽出します。
    両端に「*」を入れています。

  2. 次に、DAOを定義しています。
    これは、DAOを使ってでクロス集計クエリを作成します。
    当然、VBAの中の参照設定では、DAOを定義する必要があります。

  3. SQL1でSQL文を作成しています。
    クロス集計のSQL文がよくわからないときは、実際にクエリでクロス集計を作成して、実際のSQL文をみて把握することもできます。

  4. CreateQueryDefで、SQL1のSQL文のクロス集計を「Q_SQL2」という名前で作成します。
    これで、クロス集計クエリが作成できます。

  5. そのクロス集計クエリをサブフォームに繋げます。
    サブフォームのSourceObjectです。
    このとき、注意しないといけないのは、クエリの名前は、「Q_SQL2」なのですが、ここでの指定は、「クエリ.Q_SQL2」になります。「クエリ」という名前が付きます。

  6. サブフォームをRequeryします。

  7. そして、作成した「Q_SQL2」を削除します。

■VBAです

--------------------------

上の条件は削除しています。
SQL1も定義してください。


1. If IsNull(Me!MATERIAL) Or Me!MATERIAL = "" Then
D_MATERIAL = "*"
Else
D_MATERIAL = "*" + Me!MATERIAL + "*"
End If

2. Dim dbs As DAO.Database
Dim qdf As DAO.QueryDef

3. SQL1 = "TRANSFORM Max(OPE_DATETIME1) SELECT OPE_NO AS オペ番号,CUST_NAME AS 顧客名, " & _
"MATERIAL AS 製品名,LOT_NO AS ロット番号,ORDER_WF_QTY AS 注文枚数 FROM Q_OPE_SHINCHOKU " & _
" WHERE OPE_NO LIKE '" & D_OPE_NO & "' " & _
" AND Nz(CUST_NAME) LIKE '" & D_CUST_NAME & "' " & _
" AND Nz(MATERIAL) LIKE '" & D_MATERIAL & "' " & _
" AND SHIP_DATE IS NULL " & _
"GROUP BY OPE_NO,CUST_NAME,MATERIAL,
LOT_NO,ORDER_WF_QTY PIVOT KOUTEI_NO"
(上の行は1行で書く)

Set dbs = CurrentDb

4. Set qdf = dbs.CreateQueryDef("Q_SQL2", SQL1)
Set qdf = Nothing

5. Me!SHINCHOKU_LIST_SUBA.SourceObject = "クエリ.Q_SQL2"

6. Me!SHINCHOKU_LIST_SUBA.Requery

7. dbs.QueryDefs.DELETE "Q_SQL2"

実際に使用するときは、左の番号は削除してください。

------------------------

なかなか便利です。

「SQL Server 2008 R2 Express」とODBCでも、問題なく動きます。
便利です。

参考にしてください。



─────────────────────────────────
【03 - 編集後記    】       
─────────────────────────────────

今日、芸人の島田紳助が芸能界を引退したニュースが放送されています。

暴力団との関係が問題になっているようです。

詳細はよくわかりませんが、テレビ界には影響が大きいですね。

レギュラー番組を、6本も持っているようです。
視聴率も稼いでいましたから、代わりの人を探すのが大変です。

出演者も、今後はどうなるか不安ですね。
何でも、リスク管理は、大切です。


◆私がアクセスをマスターできたのは!!
http://www.sk-access.com/kyozai/zaiko1.html  

テーブル作成からVBAまでマスターできます。 
「在庫管理システムをアクセスで作ってみよう」教材です。
http://www.sk-access.com/kyozai/zaiko2.html  


━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
●ご意見・ご感想・ご質問
 
『メルマガでもっとお役にたてる情報を配信したいと思いますので、日ごろから疑問に思っていることを教えてください。
宛先はこちらへです』

  •  kohnai★vega.ocn.ne.jp
      (高内:こうない:)
    (メールするときは、★を@に変えてください)

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━


◎「これならわかるマイクロソフトアクセス活用法」 のバックナンバー・配信停止はこちら

archive.mag2.com/0000222659/index.html

◎以下のホームページからでもバックナンバーを見ることができます。

http://www.sk-access.com/mailmaga/index.html

登録・解除につきましてはご自身でお願いいたします。

※このメールマガジンの転送はOKですが、掲載された記事の内容を許可無く転載することをを禁止させて頂きます。
必ず事前にご相談ください。

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━


1週間でアクセス(Access)のシステム開発ができる〜
「在庫管理システムをアクセスで作ってみよう」教材

「アクセスのプログラム/システムを短期間で開発したい方」、
「アクセスのフォーム/VBAを完全にマスターしたい方」のための
アクセス(Access)を使って1週間でシステム開発する究極の方法とは?

「アクセス(Access)のシステムを無料のSQL Server 2016 Expressへ
移行してみよう」教材

あなたの会社のアクセス(Access)のデータベースやシステムに不安を感じていませんか?
アクセスのデータ量が多くなり処理スピードが遅くなった。
アクセスのデータを共有したい。
セキュリティに不安がある。などと、感じている方は!!
(SQL Server 2016 Expressバージョンです。)


「アクセス(Access)プログラムの仕様書の作り方」教材
マイクロソフトアクセスを使用して、プログラムの作成/システム開発をおこないたい方の為に、
アクセス(Access)のプログラム開発に成功するために絶対に必要な「仕様書」とは?



[↑一番上へ]
[マイクロソフトアクセス活用法(メールマガジン)(ホームへ)]
14:191505

アクセス全体

VBA

SQL Server