Access2010でクエリを使用してレコードを追加する方法

このQ&Aのポイント
  • Access2010で作成したフォーム上で「印刷」ボタンを押すと、ラベルシートに印刷されます。しかし、中途半端な枚数で印刷する場合、残りのラベルが空のまま印刷されてしまいます。そこで、印刷時にソースとなるテンポラリテーブルを作成し、指定された開始位置から必要な枚数のブランクレコードを一括で挿入する方法があります。
  • この方法では、まずまっさらなテーブルを作成し、指定された開始位置のレコードを取得します。次に、ループを使用して指定された開始位置から必要な枚数のブランクレコードを作成します。その後、16レコード目からラベル番号を入れていきます。最後に、このテンポラリテーブルをソースとして印刷することで、指定された開始位置から必要な枚数のラベルを印刷することができます。
  • 上記の方法でクエリを使用してレコードを一括挿入することができます。これにより、中途半端な枚数で印刷する場合でも空のラベルが印刷される問題を解決することができます。クエリを使用することで、手作業でループをまわしてブランクレコードを追加する手間を省くことができます。Access2010でクエリを使用してレコードを追加する方法を試してみてください。
回答を見る
  • ベストアンサー

クエリでレコード追加

お世話になります。 Access2010 作成したフォーム上で「印刷」ボタンを押すと、ラベルシートに印刷されます。 このラベルシートは3列×10枚です。 現状、普通に印刷する分には問題ありません。しかし、必ずしも30枚印刷する訳でもないので、中途半端にラベルが残ったシートが出来てしまいます。 例えば、15枚印刷した場合、そのシートにはラベルが15枚残ってしまいます。 なので、印刷時にソースとなるテンポラリテーブルを作成し、そのテーブルの頭から15レコードにブランクをいれて、16枚目から印刷させたいところです。 で、実は上記の対処も出来ており特に運用上問題無いのですが、ブランクのレコードを挿入する手順として、  1.まっさらなテーブルを作成  2.指定された開始位置(上記例だと15)を取得  3.ループで回してブランクレコードを15個作成  4.16レコード目からラベル番号を入れていく。  5.このテンポラリをソースとして印刷 としてます。 やりたいこととしては、上記のようにループでまわしながらブランクレコードを追加するのではなく、指定された開始位置の分のレコードを、クエリで一括挿入できないか・・というものです。 ご教授の程、宜しくお願い致します。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

私流のやり方です。 SELECT A FROM T2 WHERE T2.id<5; UNION SELECT A FROM T1 WHERE T1.id>0; ダミーテーブルを用意し UNION クエリーを作成します。 [T2.A] _dummy01 _dummy02 _dummy03 _dummy04 ・・・・ _dummy99 ダミーテーブルのA列には、先頭ブランクのデータを上のように登録します。 これで、レポートには必要なダミー列が表示されます。 <出力時にダミー列の文字の色を白に変更> 僅かに1行のコードを書けば、これが達成されます。 ※正規のやり方ではないので参考までに!

naoto0216
質問者

お礼

fa007さま 早速のご回答ありがとうございます。 #1さまのご回答と同様に、ユニオンクエリを使えばいいんですね。 例まで載せて頂きありがとうございました。 勉強になりました。

その他の回答 (1)

回答No.1

下記で紹介している方法なら、そのような一時テーブル自体が不必要です。 宛名ラベルを指定位置から指定枚数 印刷する方法 http://www.f3.dion.ne.jp/~element/msaccess/AcTipsRptHowToPrintRabelSpecificNumber.html

naoto0216
質問者

お礼

hatena1989さま 早速のご回答ありがとうございます。 ユニオンクエリをつかえばいいんですね! 勉強になりました。ありがとうございました。

関連するQ&A

  • access クエリ レコードの追加ボタン?

    クエリのデータシートビュー時の 最下部に現在の位置やレコード総数などを表示する場所がありますよね?そこに「一番下のレコードに移動する」ボタンがありますよね? (「>*」のような記号のボタンです。) このボタンを有効/無効にする設定はどこでできますか? このクエリは1つのテーブルから作っているので、普通に作成すれば、レコードの追加も、内容の変更も出来ます。 実は、偶然にも無効にしてしまっているで有効に直したいのです。 フォームでいうところの「追加の許可」みたいな「新規レコードの追加はできる/できない」みたいな機能です。 よろしくおねがいします。

  • Access テーブル作成クエリについて

    お世話になります。 以下のようなテーブルがあります。 区分 コード AA  I001 AA  I002 AA  I003 BB  I004 BB  I005  ・   ・  ・   ・ FF  I012 例えば、フォーム上で数量「3」と入力され、「出力」ボタンが押されたときに、 上記のテーブルのレコードが3セットあるテーブルを作成したいと考えて おります。 区分 コード AA  I001 AA  I002  ・   ・  ・   ・ FF  I012 AA  I001 AA  I002  ・   ・  ・   ・ FF  I012 AA  I001 AA  I002  ・   ・  ・   ・ FF  I012 となるイメージです。 まっさらのテーブルを作成し、ループで回しつつレコードを追加していけば よいかと思うのですが、1回のテーブル作成クエリの実行で作成することは 可能でしょうか。 ※上記テーブルが出来たら、そのテーブルをソースとしたレポートでラベルを   印刷させます。 ご教授の程、宜しくお願い致します。

  • テーブルに新しいレコードを追加する方法について

    ACCESS2007を使っています。 フィールドに以下のような項目があるテーブルAがあります。 日付 | 名称 | 項目 | MIN(数値) | MAX(数値) | チェック(Yes/No) また、以下のような項目があるテーブルBがあります。 日付 | 名称 | 項目 | ナンバー(数値) このテーブルAに以下のようなデータが入っているとして 1/1 | あああ | いいい | 10  | 100 | No 1/1 | あああ | ううう | 1 | 20 | Yes テーブルBに以下のようにレコードを追加したいのです。 1/1 | あああ | いいい | 10   1/1 | あああ | いいい | 11    ・  ・  ・ 1/1 | あああ | いいい | 100 1/1 | あああ | ううう | 1 1/1 | あああ | ううう | 2   ・  ・  ・ 1/1 | あああ | ううう | 20 1/1 | あああ | ううう | blank  最終的には、テーブルBをソースとしてラベル印刷したいと思っています。 レコードセットとFor~Nextなどを使えばできそうな気がするのですが、???です。 どなたかご指南いただけませんでしょうか?

  • ACCESSで、1ページに全て同じ宛名を印刷するには?

    宛名ラベル印刷について教えてください。 テーブルに1件(1レコード)の宛名があります。それをソースに宛名ラベルを作成 すると、1枚分の宛名ラベルが印刷されるのですが、1ページの宛名ラベル全てに (12枚とか16枚とか)同じ宛名を印刷する方法はありますか? テーブルに、12レコードとか16レコードぶん同じ内容をコピーすればできますが、 あくまで1レコードで・・・。 どなたかお教えください。

  • Accessのレポートで同じレコードを連続表示

     アクセスの宛名ラベル印刷で、1ページを全て同じレコードが表示されるものを作りたいと思います。  以前同じ質問をさせて頂いた時に、住所テーブルと印刷枚数の数字の入ったテーブルをクエリーで・・・・という方法を教えていただきました。が、今回の元となるテーブルはキーはオートナンバー式ではなく、各住所に独自のコードが付けられています。なおこのテーブルは変更できません。  また、レポートの宛名ラベル作成ウィザードで1枚分のラベルを作成し、それを1ページ分コピーすることも考えていますが、かなり時間がかかりそうです。何か、効率の良い方法はないでしょうか。  よろしくお願いします。

  • 【VBA】レコードセットからグラフを作成

    Excel2002とAccess2002を使っています。 (1)Accessから取得したレコードセットをデータソースにして  グラフを作成する事はできますでしょうか?  (シートにレコードセットを格納せずに) (2)上記が実現不可なら、レコードセットを配列に代入し、  その配列をデータソースにしてグラフを作成する事はできますでしょうか? レコードセットを一度シートに吐き出す事は考えていません。 (1)、(2)とも具体的なコードを書いて頂けると助かります。 よろしくお願いします。

  • Access2007 「レコードを追加できません」

    Access2007で困っております。 フォーム上からテキスト型のデータを入力しようとしても 「レコードを追加できません、テーブル’T_アルバム’の結合キーがレコードセットにありません。」 と表示されうまく入りません。 【テーブル構成】 ★が主キー (1)T_アルバム ★アルバムID テキスト型 アルバム名 テキスト型 ジャンルID テキスト型 ソースID テキスト型 アーティストID テキスト型 (2)T_曲目 ★曲ID テキスト型 曲名 テキスト型 トラックNo テキスト型 アルバムID テキスト型 (3)MT_アーティスト ★アーティストID テキスト型 アーティスト名 テキスト型 (4)MT_ジャンル ★ジャンルID テキスト型 ジャンル名 テキスト型 (5)MT_ソース ★ソースID テキスト型 ソース名 テキスト型 【リレーション】 ※いずれも参照整合性付き (1)T_アルバム アルバムID --- (2)T_曲目 アルバムID (1)T_アルバム アーティストID --- (3)MT_アーティスト アーティストID (1)T_アルバム ジャンルID --- (4)MT_ジャンル ジャンルID (1)T_アルバム ソースID --- (5)MT_ソース ソースID フォーム作成のために「Q_アルバム情報入力」をつくりました。 アルバムID T_アルバム アルバム名 T_アルバム アーティストID MT_アーティスト アーティスト名 MT_アーティスト ジャンルID MT_ジャンル ジャンル名 MT_ジャンル ソースID MT_ソース ソース名 MT_ソース この「Q_アルバム情報入力」を使って、フォームウィザードからフォームを作成し、 アルバムIDやアルバム名を入力しようとすると 「レコードを追加できません、テーブル’T_アルバム’の結合キーがレコードセットにありません。」 と表示されます。 他のフィールドは値が入力できますが、これら2つのフィールドのみ入力できません。 なお、各テーブルのフィールドには予めデータが入っている状態です。 宜しくお願い致します。

  • Accessのラベル作成について

    テーブルにレコードが3件あります。 <例> 1 りんご \100 2 ぶどう \200 3 みかん \300 この3レコードを1つのラベルに配置し、1枚の用紙~例えば4枚のラベルが印刷できる用紙~に4つとも同じラベルを印刷したいのですが。。可能でしょうか? もし、できれば枚数を指定して印刷できればベストなんですが。例えば6枚、とすると1枚目と2枚目の用紙の2つ目まで印刷されるようにしたいです。

  • いちばん最後のレコードに値の追加ができません。

    ACCESSで、何週間も原因がどうしても解らず困っております。お助けください。 ある条件を基に複数のテーブルを参照しデータ加工を行った後に、レポート作成用テーブルのいちばん最後のレコードに必ず追加登録をしたいのですが、いちばん最後のレコードに登録できたり、既に登録されているレコードの間に割り込んで登録されたり処理の検証を行うたびに結果が異なるのです。 何度もデバッグを行いましたが、レポート作成用テーブルへUPDATEするまでの処理及びデータには間違いありません。レポート作成用テーブルで勝手にデータ入れ替わっているとしか思えないのですが・・・・・・ 最初はRecordsetオブジェクトはテーブルタイプを指定し、Addnew及びUpdateメソッドで追加登録していましたが、思うように動作しないためRecordsetオブジェクトをダイナセットタイプに変更してみましたが処理結果は変わりません。 ※RecordsetオブジェクトでIndexプロパティの設定はありません 参考書にダイナセットタイプのRecordsetオブジェクトは、設定されている並べ替え規則にかかわらず、必ずいちばん最後のレコードに追加されると記載されていたので試してみましたが駄目でした。 おおざっぱな説明で現状を理解して頂けるかわかりませんが宜しくお願いいたします。

  • クエリフォームからのレコード追加について

    お世話になります。 タイトルとして、「クエリフォームからのレコード追加」とすべきか 「フォーム上でのテーブル参照」とすべきか迷うところなのですが 仕入マスタ(ID、品番、仕入日、仕入数) 商品マスタ(ID、品番、商品名) という二つのマスタと、 品番でリレーションして「仕入マスタのフィールド(from仕入マスタ)+商品名(from商品マスタ)」を出すだけの単純なクエリがあります。 今、仕入マスタに新規レコードをフォームから追加する際、 品番を入れたら商品マスタから商品名が参照され表示される、というフォームを作成したいのですが、どうしたら実現可能でしょうか。 (絶対やりかたがあると思ったのですが、うまく探せず質問させていただきます) 当初、新規レコード追加時には、品名を表示させようとしていなかったため、普通に「仕入マスタのフォーム」で「新規」ボタンに下記プロシージャを登録していたのですが。。 「仕入マスタのフォーム」を「仕入クエリのフォーム」に変更して、下記プロシージャを少々修正するだけで実現できるでしょうか。 (素人考えでいくつか試してみたのですが、この場合★の部分に何を指定すればいいのかわかりません。) Private Sub 新規_Click() Me.AllowEdits = False Me.AllowAdditions = True DoCmd.GoToRecord acDataForm, "仕入マスタ", acNewRec '★ End Sub わかりにくい説明で申し訳ございません。 何卒お力添え宜しくお願い致します。