[三流君] −−> [VBAで楽しく] −−> [バックナンバー一覧]
−−> No.135 Access テーブル作成クエリーを使用してみた

Access テーブル作成クエリーを使用してみた

メルマガ発行内容

<Access テーブル作成クエリーを使用してみた>

こんにちは、三流プログラマーのKen3です。 今回は、 テーブル作成クエリーを使用して、 既存のデータからテーブルを作成してみたいと思います。

/* * 1. 今回のキッカケ */

No.133 仕様変更が来たら?落胆しないで前向きに? http://www.ken3.org/backno/backno_vba27.html#133 で、 集計方法を考えました。※良い悪い、は、置いといて(笑) 今回は、データ作りで、テーブル作成クエリーを使用してみたいと思います。

/* * 2.処理の仕様 */

処理の流れ、仕様は下記のような感じです。 MOTO_DATA テーブルにExcelからデータがインポートされます ※今回は、この時点からスタートします。 郵便番号 氏名 住所 電話番号 001-0854 鉢呂 北海道札幌市 061-3772 佐々 北海道石狩郡 101-0051 小林 東京都千代田 101-0054 杉本 東京都千代田 102-01 1940001 194 228-02 22802 上記データから3つのテーブルを作成します ア.YUBIN_DATA5 テーブルの作成 郵便番号フィールドを −を取り除き、5桁にしたデータを作成します。(上5桁を取り出す) 例)001-0854 --> 00108 , 102-01 --> 10201 郵便番号 00108 06137 10100 10100 と、−を取り除き、上5桁のテーブルを作成する  ※2・3桁のデータは、次のYUBIN_DATA3,YUBIN_DATA2に作成する イ.YUBIN_DATA3 テーブルの作成 3桁の郵便番号データのテーブルを作成する。 数のフィールドには固定で1をセットする YUBIN_DATA3 郵便番号 数 001 1 061 1 101 1 ※数のフィールドを作成データは1を固定でセット ウ.YUBIN_DATA2 同様に2桁の郵便番号データのテーブルを作成する。 数のフィールドには固定で1をセットする YUBIN_DATA2 郵便番号 数 01 1 02 1 44 1 ※数のフィールドを作成データは1を固定でセット

/* * 3.テーブル作成クエリーを使用する */

テーブル作成クエリーって?な人も居ると思います。 カッコつけて書いてますが、たいしたこと無くて、 普通にクエリーで表示した項目・値を使用して、 新しいテーブルの作成/既存のテーブルの書き換え を行うクエリーです。 簡単な作り方は(私の手順は) まず、表示する普通のクエリーを作成します。 YUBIN_DATA3 テーブルの作成 3桁の郵便番号データのテーブルを作成する。 数のフィールドには固定で1をセットする YUBIN_DATA3 郵便番号 数 001 1 061 1 101 1 ※数のフィールドを作成データは1を固定でセット イのYUBIN_DATA3 テーブルの作成時は、まず、 MOTO_DATA テーブルから、3桁のデータを表示するクエリーを作ります。 郵便番号と文字数をLen関数で計算したフィールドを取り、 計算した文字数が3と条件を付けたクエリーをまず作成します。 ※文字数フィールドの表示□チェックをしないのがポイントです。 ↑3桁の郵便番号を取り出したクエリー ここに、固定で1を表示したいので、 演算フィールドで 数:1 と固定値を書き込みます。 ↑演算フィールドで1を固定表示 これで、下記のようなデータを表示するクエリーが作成されました。 郵便番号 数 228 1 232 1 232 1 ここからが、本番です。 この表示したクエリーをテーブル作成クエリーに変更します。 変更手順は、これも簡単で、 メニューからクエリ・テーブル作成を選択します ↑メニューからクエリ・テーブル作成を選択 すると、 作成したいテーブル名を入れろと出てくるので、 YUBIN_DATA3と作成したいテーブル名を入力しOKを押します。 ↑テーブル名の入力 こんな感じで、出来てしまうんですね。 実行すると、確認メッセージが表示され、OKを押すとテーブルが作成されます。 ↑作成確認メッセージ 2桁のパターンは、Len(郵便番号)の条件が違うだけなので、 練習を兼ねて、作ってみてください。

/* * 4.演算フィールドで−を取り除く */

次は、少し面倒な、7桁の郵便番号から−を取って、 頭5桁の(上から5桁の)データテーブルを作成します。 操作したいデータ、そのままのデータを判断しやすいように、 まず紙に 実データ(想像データでも可能)元データ と 変換後のデータ のパターンを書きます(変換パターンを洗い出します) 元 変換後 001-0854 --> 00108 3+4桁の通常データ、−を取り、5桁にする 102-01 ----> 10201 3+2桁の過去データ、−を取り除く 0014567 ---> 00145 −無しの7桁データ、そのまま5桁取る 12398 -----> 12398 −無しの5桁データ、なにもしない 123 -------> 123 3桁のデータ、何もしない、※データも追加しない 001-0854 と 102-01 の時の判断は、4文字目が−か判断して、 頭から(左から)3文字+5文字目から2文字を抜き出し+すれば作れそうです。 4文字目が−じゃない時のデータは、 左から5文字をそのまま取れば作れそうです。 便利なIIf関数を使って、-を判断して、文字列を作成してみます。 IIf(Mid([郵便番号],4,1) = "-", -ありの処理, -なしの処理) と作れます。 -有りは、 Left([郵便番号],3) & Mid([郵便番号],5,2) -無しは、 Left([郵便番号],5) と、関数の組み合わせで作れそうです。 変換後郵便番号:IIf(Mid([郵便番号],4,1) = "-", Left([郵便番号],3) & Mid([郵便番号],5,2), Left([郵便番号],5)) と少々長いですが、演算フィールドで作成できます。 ↑長い演算フィールド、クエリーの作成イメージ おっと、これだと、228や194など、3桁の郵便番号も表示されてますね。 Len(郵便番号) が >4 と条件を入れないとね その後、テーブル作成のクエリーに変更して、 (メニューからクエリ・テーブル作成を選択します) テーブルを作成するクエリーが完成します。 誤算なのは、 郵便番号:IIf(Mid([郵便番号],4,1) = "-", Left([郵便番号],3) & Mid([郵便番号],5,2), Left([郵便番号],5)) とすると、循環参照のエラーが発生するので、 変換後郵便番号としているため、 仕様書通りのフィールド名でテーブルを作成できませんでした。 ↑循環参照のエラー発生イメージ

/* * 5.終わりの挨拶 */

今回は、 テーブル作成クエリーをと使用して、 クエリーからテーブルを作成してみました。 ポイントは、 ^^^^^^^^^^^^ 普通に表示用のクエリーを作成する。 クエリーのモードをテーブル作成に変更、作成するテーブル名を入れる。 そんな感じの流れで作成可能です。 今回の、サンプルファイルは、 http://www.ken3.org/vba/lzh/vba135.lzh にdb135.mdb(Access2000版)が保存されています。 ※クエリーやデータをいじって、遊んでみてください。 う〜ん、まだまだだなぁ・・・ 何かの参考となれば幸いです。 Excel/Access大好き、三流プログラマーKen3でした。

フィードバック

VBA系の→[掲示板]←を覗く、質問を書き込む

評価・感想

No.135を読んだ満足度(評価)は?
5満足(参考になった)
4まぁまぁ(一部参考になった)
3普通(どちらとも言えない)
2なんかなぁ(期待と違った)
1不満(読んで損した気分)
作者に感想・質問を送る場合は下記に気軽に書いてください
あなたのお名前(ニックネーム) さん

作者からの返信は、 不用 E-mail で受信したい
*質問・感想はメルマガで紹介する場合があります

ページフッター(リンクや広告など)


[三流君(TOP ken3.org へ戻る)]
-- [VBA系TOPへ]
---- [VBA系バックナンバー目次へ移動]
------ [VBAでIEを操作 CreateObject("InternetExplorer.application")]・・・実は当店一番人気、VBAでIEを操作するサンプルです
------ [VBAでOutlookの操作 CreateObject("Outlook.Application")]・・・Outlookを使い、メール関係の処理です
------ [Access から Excel 連携 CreateObject("Excel.Application")]・・・人気のAccessからExcelへデータ書き出しなどです
------ [AccessのUserForm/サブフォームを操作]・・・アクセスでフォームを使ったサンプルです
------ [Accessのレポートを操作]・・・レポートを操作してみました
------ [Access クエリー関係やその他関数]・・・あまりまとまってませんが、スポット的な単体関数の解説です
------ [Excel UserForm(ユーザーフォーム)を操作する]・・・エクセルでユーザーフォームを作成して入力などを行ってます
------ [ExcelからAccessを操作する]・・・ExcelからAccessのマクロを起動してみました、
------ [Excel関係 関数、その他]・・・その他Excel関係です
------ [VBAでテキストファイル(*.txt,*.html,*.csv)の操作]・・・テキストファイルを使ったサンプルです
------ [VBA 標準関数関係とその他解説]・・・その他、グダグタ解説してます


広告
-- [通販系の売れ筋広告へ] ←主に楽天やAmazonのランキングです
blog
-- [三流君の作業日記] ← 日々の作業を少々
-- [通販あしあと] ← 通販ページの足跡を一覧で羅列

情報を探す

情報を探すならGoogleかな?

↓Web全体、サポート情報(support.microsoft.com)や三流君VBA(ken3.org)から検索する
Google
Web www.ken3.org
www.microsoft.com support.microsoft.com

あとは、項目別にMSでお勉強かな?
◆ マイクロソフト サイトの歩き方
◇ How-To インデックス
◇ FAQ インデックス
◇ スキルレベル別おすすめコンテンツ
◇ テクノロジ マップ
◇ テーマ別技術資料一覧

書籍の購入

Webだけじゃさすがに勉強しきれないので、プログラミング関係の書籍も読んでみては??

コンピュータ書籍の発送がハヤイ専門店

コンピュータの本・専門店
種類が豊富で探し易いです。※在庫ありが48時間以内発送が急ぎで資料や書籍がほしい時、とても助かります。
お奨め本の目次を見るだけでも勉強になったり

amazon.co.jpでキーワード別チェック

下記、私が設定したキーワードですが、こんな感じで資料や書籍を探ってみては?
[VBA全体を把握する] -- やはり全体をさらっと見たいですよね。
[SQL関連でDB力UP] -- システムはデータベース設計が重要
[ADO接続を探る] -- VBAなのでADO接続を押さえておく
[Windows APIを探る] -- さらにAPIになて知ってれば強力だ!
[.NETを探る] -- と言っても時代は.NETに流れてるし
プログラミング以外でも知りたいことは多くって、
[人間関係] -- で、客先・上司、まわりに気を使い。
[プログラマーの自己啓発] -- プログラムだけじゃなくいろいろと向上したいよ
[コーチング・育成] -- 先輩になったら後輩(部下)の面倒をみてね。
そんなこんなでプログラマーっていろいろと大変なんだってば・・・