困っております。
簡単だと思っていたので、自分で色々と調べましたが、方法が見つかりませんでした。

ACCESSのレポートで商品のラベルを発行したいのですが、たとえばAという商品の数量が2の場合、その商品のラベルを2つ表示させたいのですが、どのようにすればよいでしょうか?なるべくVBAを利用せずに、シンプルに実現する方法があればアドバイスをお願いします。

A 回答 (1件)

「VBAを利用せずに、シンプルに実現する方法」とのことですので以下のようなものでは如何でしょうか?


1.数量というフィールド(データ型は上記の数量が入力されているものと同じ)が1つのテーブルを作成します。
2.数量フィールドに値が1の場合には1行、値が2の場合には2を入力して2行、・・・・、というように数量と同じ値の行数を数量分入力します。
3.このテーブルを質問にある数量のフィールドと結合したQueryを作成します。
このQueryをレコードソースにすれば、質問のように数量分の枚数ができると思います。
(但し、枚数が少ない場合に限ります)
    • good
    • 0
この回答へのお礼

その方法は全然思いつきませんでした!
有難う御座います!

ですが、やはり枚数が10枚、20枚となるとしんどいものがあります。
とりあえず、一つの方法として覚えておきます。ありがとうございました!

お礼日時:2002/03/27 17:12

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

このQ&Aを見た人はこんなQ&Aも見ています

関連するカテゴリからQ&Aを探す

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QAccessでレポート内の繰り返しレコードの行数を固定したいです。

Accessでレポート内の繰り返しレコードの行数を固定したいです。

Access2007を使っています。

社内のフォーマットに合わせた物品購入申請書のようなものを
Accessのレポート機能を使って印刷したいと思っています。

大きく2つのテーブルから構成されます。

 (申請書テーブル)
  1文書に1レコードが該当するもの
  書類番号、申請日や申請者名、購入目的等が入ります。

 (購入物品テーブル)
  1文書に複数のレコードが該当するもの
  購入する物品の名前や金額等が入ります。
  書類番号を外部キーとして申請書テーブルとリンクします。


レポート機能で、この二つのテーブルを対象として、
(正確には、申請書テーブルはフォーム上で開いているレコードのみを対象と
 するために、クエリを仲介して)
購入物品は繰り返しにするようにすることで、ひととおり形にはなったのですが、
1つうまくいかないことがあります。

社内のもともとの手書き用フォーマットには、購入物品の記入枠が20行あります。
これは多めにつくってあるので、当然購入物品数が20以下の場合は、残りの行は
空白になっています。
しかし、Accessのレポートで作ったものは空白行がなく、おかげで購入物品件数
により「詳細」と「フッタ」の間の不自然な空白が広くなったりします。

フッタと言っても、内容的には、「上記物品の購入云々~、お願い致します。」
とかサインするエリアとかですので、繰り返しが終わったらすぐに開始をして
ほしいのです。

購入物品の数に関わらず全体の行数を20に固定する方法はありますでしょうか?

Accessでレポート内の繰り返しレコードの行数を固定したいです。

Access2007を使っています。

社内のフォーマットに合わせた物品購入申請書のようなものを
Accessのレポート機能を使って印刷したいと思っています。

大きく2つのテーブルから構成されます。

 (申請書テーブル)
  1文書に1レコードが該当するもの
  書類番号、申請日や申請者名、購入目的等が入ります。

 (購入物品テーブル)
  1文書に複数のレコードが該当するもの
  購入する物品の名前や金額等が入ります。
  書類番号...続きを読む

Aベストアンサー

レコードがない場合も用紙の最後まで罫線を出力する
http://hatenachips.blog34.fc2.com/blog-entry-17.html

レポートに関してはトップクラスの hatena さんのページです。

参考URL:http://hatenachips.blog34.fc2.com/blog-entry-17.html

QACCESS レポートの印刷枚数指定について

商品ごとに異なるシール枚数の印刷をしたいのですが、印刷枚数においてテーブルのリンクがされたエクセルのセルに入力されている数字をそのまま印刷枚数とすることができますでしょうか?
また一回の印刷ボタンのクリックでそれぞれのセルにある枚数を全て印刷することは可能でしょうか?
(アクセス及びエクセルのバージョンは2000を使用)

具体的にいいますと
(1)テーブルのリンクをしたエクセルデータを使用しています。内容は(2)の通りです。
(2)エクセルデータの件数は10件であり、項目は、A1:商品コード、B1:商品名、C1:印刷枚数とします。
(3)C2~C11には、それぞれの異なる印刷枚数が入力されています。

どなたかご存知の方がいらっしゃいましたら教えてください。宜しくお願いします。

Aベストアンサー

>商品ごとに異なるシール枚数の印刷をしたい
>テーブルのリンクがされたエクセルのセルに入力されている数字をそのまま印刷枚数とする
モジュールを使った方法とテーブルを使った方法があります。テーブルを使った方が簡単ですが・・。

テーブルを使う方法
連番を保存するテーブルを作ります。連番は1から印刷枚数の最大より多めに順に入力しておく。(例えばテーブル名をT連番としフィールドは連番とします)
リンクされているExcelシートのクエリでクエリを作ります。そのクエリにテーブル追加でT連番を追加し連番をクエリのフィールドに追加します。(ExcelソートのデータとT連番はリレーションを取らないように)連番の抽出条件に<=[印刷枚数]と記述します。
そのクエリを開くと印刷枚数分同じレコードが出来ます。
そのクエリをタックシートのレポートのレコードソースにして出力すれば印刷枚数に合わせて同じシールが出力されます。

モジュールを使う場合
レポートの詳細に非表示のテキストボックスを1つ作ります。例えばそのテキストボックス名をText1としExcelシートの印刷枚数のフィールド名を印刷枚数とした場合。
レポートの詳細のプロパティのフォーマット時のイベントに
Private Sub 詳細_Print(Cancel As Integer, PrintCount As Integer)
Dim 指定枚数 As Integer
指定枚数 = Me!印刷枚数
If [Text1] <> 指定枚数 Then
[Text1] = [Text1] + 1
Else
[Text1] = 1
End If
End Sub
同様に印刷時のプロパティに
Private Sub 詳細_Print(Cancel As Integer, PrintCount As Integer)
Dim 指定枚数 As Integer
指定枚数 = Me!印刷枚数
If [Text1] <> 指定枚数 Then
[Text1] = [Text1] + 1
Else
[Text1] = 1
End If
End Sub
を記述します。
これで出来ます。

試してみてください。

>商品ごとに異なるシール枚数の印刷をしたい
>テーブルのリンクがされたエクセルのセルに入力されている数字をそのまま印刷枚数とする
モジュールを使った方法とテーブルを使った方法があります。テーブルを使った方が簡単ですが・・。

テーブルを使う方法
連番を保存するテーブルを作ります。連番は1から印刷枚数の最大より多めに順に入力しておく。(例えばテーブル名をT連番としフィールドは連番とします)
リンクされているExcelシートのクエリでクエリを作ります。そのクエリにテーブル追加でT連番を...続きを読む

QAccessのRefresh・Requery・Repaintの違い

Requeryはもう一度ソースレコード(テーブル)を読み込むようです。このとき、テーブルの先頭レコードに移動してしまいます。
Refreshは最新のレコード(テーブル)を再表示するような気がします。レコードの移動は起こらない気がします。
Repaintは、VBAでキャプションなどを変更したとき使っています。
でも、よくわかっていません。
どんなときにどんなメソッドを使えばいいのでしょうか?
詳しい方、よろしくお願いいたします。

Aベストアンサー

たびたびすみません。
調べてたらこんなのがでてきました。
http://www.nurs.or.jp/~ppoy/access/access/acF007.html

参考URL:http://www.nurs.or.jp/~ppoy/access/access/acF007.html

Qアクセスのレポートのヘッダーを2ページ以降にもつけるには?

アクセスでスタッフの交通費の集計をしレポートに出力しています。1ページ目に所属部署、行き先などヘッダーがあります。2ページ目にも同様のヘッダーを入れたいのですが、どうすればいいのでしょうか?初歩的な質問ですいませんが、困っています。

Aベストアンサー

レポートヘッダーにヘッダーを設定しているとレポートの最初だけ表示されます。
所属部署・行き先等のヘッダーをページヘッダーに移動してレポートヘッダの高さを0にしてください。(レポートヘッダー部に表示するラベル等があればそれに合わせて高さを設定してください。)
そうすれば各ページにヘッダーが表示されます。
ページヘッダーにある各ヘッダーを移動後レポートヘッダー・フッターに何も表示するものがなければレポートヘッダー・フッターを削除してもかまいません。

QACCESS IIF関数 複数条件の設定について

 選択クエリにおいて、あるフィールド「 X」 のレコード数値が
 
  0<[X]<=50   であれば A 
  50<[X]<=100  であれば B 
  100<[X]<=150  であれば C

 と表記させるフィールド「Y」を追加したいと考えています。
 この場合、Yのフィールド設定で指定する数式についてご教授願います。

 一応、
  IIf(0<[X]<=50,"A","") Or IIf(50<[X]<=100,"B","") Or IIf(100<[X]<=150,"C","")

  としましたが、実行すると、Yの列がすべて「-1」と表記されてしまいます。

 何卒よろしくお願いいたします。

Aベストアンサー

a)IIF関数で対応する場合:
 IIF関数の第2引数または第3引数に、IIF関数を入れ子とする必要があります。

式: IIF([X]<=0, "", IIF([X]<=50, "A", IIF([X]<=100, "B", IIF([X]<=150, "C", ""))))


b)別の組込関数を使用する場合:
 IIF関数は二択ですので入れ子にする必要がありますが、Accessのクエリで
 使用できる、似た機能の関数に、Switch関数というものもあります。
 これであれば、入れ子にする必要がなくなります。
 (詳しくは、Accessのヘルプを参照下さい)

式: Switch([X]<=0, "", [X]<=50, "A", [X]<=100, "B", [X]<=150, "C", True, "")


なお、数学あるいは一般生活では確かに「0<[X]<=50」という表記をしますが、
Accessの関数などではこれだと正しい結果が得られません。
正しく認識させるためには、等号・不等号を挟んだ式は、「左辺」と「右辺」の
2つの要素からなる形にする必要があります。
(「0<[X]<=50」は「[X]>0 And [X]>=50」と分割してやる、と)

但し、今回のご質問のような『連続した範囲』であれば、前(左)で既出となる
式の要素で「[X]<=0」が「真(=-1)」とならなかった時点で、「[X]>0」が保証
されますので、上記のように、「[X]>0」を省略して「[X]<=50」だけを条件として
指定すればOk、ということになります。
(「0<[X]<=50」の次が「80<[X]<120」などのように、「50~80」が欠けた
 場合は、省略ができない、と)


【参考】
「0<[X]<=50」は、このままだと「0 < ([X]<=50)」という式と解釈されます。
この場合、「[X]<=50」は、「真(=-1)」か「偽(=0)」か「Null」のいずれかに
なります。
何にせよ、「0<[X]<=50」全体として「正(=-1)」となることがないため、
ご質問の式では、IIF関数は常に第3引数に指定された値「""」を返す
ことになります。

この結果、式全体としては「"" Or "" Or ""」という形となり、「0かNull」
以外なので、「真(=-1)」という値が返された、ということです。

なお、Nullについては、以前、他の方の質問につけた回答も、併せて参考までに:
http://oshiete.goo.ne.jp/qa/4850675.html

a)IIF関数で対応する場合:
 IIF関数の第2引数または第3引数に、IIF関数を入れ子とする必要があります。

式: IIF([X]<=0, "", IIF([X]<=50, "A", IIF([X]<=100, "B", IIF([X]<=150, "C", ""))))


b)別の組込関数を使用する場合:
 IIF関数は二択ですので入れ子にする必要がありますが、Accessのクエリで
 使用できる、似た機能の関数に、Switch関数というものもあります。
 これであれば、入れ子にする必要がなくなります。
 (詳しくは、Accessのヘルプを参照下さい)

式: Switch([X]<=0, "", [X]<=50, "A"...続きを読む

Qアクセスで特定のレコードのみのレポートを印刷したいのですが。

アクセス2003である特定のレコードのみのレポートを印刷したいと思っています。現在開いているフォームのレコードのみを印刷(レポートとして)印刷するには、ファイル→印刷→ページ指定で現在印刷しているのですが、他に方法はないでしょうか?単に「レポートの印刷」とすると全てのレコードが印刷されてしまいます。今のところ特定のレコードのみ印刷するには、まずページ数を調べなければいけないので不便です。せっかくパラメータクエリなどで、そのレコードのフォーム画面を表示させても、レポート印刷につながらないので、どなたか良い方法を教えていただけないでしょうか?よろしくお願いいたします。

Aベストアンサー

レポートの基となるクエリを開きます。
フォームに表示されている項目の中で主キーとなるフィールドがどれかを決めます。
そのクエリの中でその主キーフィールドのWHERE条件の欄を選択してビルドを開きます。
レポートを選択するフォームの一覧を開きます。
先ほど選んだ主キーの項目を選んでダブルクリックします。
Ok
そうすれば、フォームから印刷ボタンを押せば開いているページだけが印刷されます。
但し、複数ページの指定をするには、更に複雑な設定が必要ですが、
今の照会した方法を応用すればできるはずです。

Qアクセス レポートの行数を固定したい

一覧表形式のレポートを作成中です。グループごとにページを分けて印刷するのですが、抽出レコードの数によってページごとの行数が当然変わっています。体裁を統一しなければならないため、すべてのページの行数を20行に統一したいのです。(元となるテーブルにダミーのレコードを挿入して強引に20行づつにすればなんとかいくとは思うのですが、)いい方法はないでしょうか。ご存じの方どうかご教示ください。
アクセス2002 です。

Aベストアンサー

よく見かける質問ですね

access レポート 行数固定
と検索してみた最初のリンクを参考に入れておきます

参考URL:http://www.accessclub.jp/bbs3/0037/superbeg15333.html

QアクセスVBAのMe!と[ ]

基本的なことですみません。

アクセスのイベントプロシージャで、Me!ってありますけど、これはどういう意味なんでしょうか?

また、Me!の後に、Me!.~~と書く場合と、Me!.[~~]と書く場合がありますが、どこが違うのでしょうか?

Aベストアンサー

>プロシージャ内で[]を使う場合は、そのフォーム外のオブジェクトを使う場合と考えてよろしいでしょうか?
別のオブジェクトを使う場合だけではありません。
Hensu = Me![Text1]のようにHensuという変数に自身のTest1の値を代入する場合のように。
[]で括られているのがオブジェクト名やコントロール名だよという事。
クエリの抽出条件に存在しない[?]とすれば?というコントロール等が参照できないので?というダイアログが表示されるように?というオブジェクトやコントロールは何?と聞いてくるように。
>フォーム内のオブジェクトの場合はあくまでMe!で良いのでしょうか
Forms.[フォーム名]![コントロール名]やForms![フォーム名]![コントロール名]が構文。
アクティブなフォームが自分自身ならForms![フォーム名]の変わりにMeでもOKですという事。

と言う解釈の方が良いと思います。

QAccess フォームのテキストボックスに半角英字のみで入力する設定は

IME入力モードをテーブル・フォームともオフにしたのですがひらがな入力モードになってしまいます。
フォームのテキストボックスに半角英字のみで入力する設定としてプロパティのIME入力モードをオフにするやり方自体が間違っているのでしょうか。
それともATOKを使っているなど利用するパソコン側の問題でしょうか

Aベストアンサー

IME入力モードを「使用不可」にしましょう。

Qアクセスで#エラーを表示させない方法は?

アクセス2000を使用しています。フォームにテキストボックスを貼り付けて、計算式を入れています。計算できない数値になると、#エラーと表示されます。目障りなので、#エラー という表示を消したいのですが、どうしたらよろしいでしょうか?宜しくお願い申し上げ候。

Aベストアンサー

はじめは「IIF関数とIsError関数を使用して」と考えたものの、IIF関数は引数がエラーになった時点で
エラーが返されてしまう(=元の木阿弥)ので、どうしたものかと思ったのですが・・・
とりあえず、「見た感じ、何も表示されていないように見える」ということで、『条件付書式』での対応と
いうのはいかがでしょうか。

1)当該フォームをデザインビューで開く
2)当該テキストボックスを選択
3)メニューで「書式(O)→条件付き書式(D)」を選択
4)『条件付き書式設定』ダイアログが開くので、『条件1(1)』枠の左端にあるコンボボックスで「式」を選択
5)上記コンボボックスの隣が1つのテキストボックスになるので、そこに以下のような式を入力
 IsError([テキスト0])
 ※上記の式は当該テキストボックスの名前が「テキスト0」の場合です。
6)上記テキストボックスの下、右から2番目に「A」と表示された、文字色を指定するボタンがあるので、
 その左の小さな「▼」をクリックし、当該テキストボックスの背景と同じ色(既定では白のはず)を選択
7)『OK』ボタンをクリックしてダイアログを閉じる

・・・以上です。
これで、『テキスト0』の計算式がエラーになった場合は、文字色が背景と同じ色になるので、「#エラー」と
いう表示はされていないように見える、という状態にすることができると思います。

はじめは「IIF関数とIsError関数を使用して」と考えたものの、IIF関数は引数がエラーになった時点で
エラーが返されてしまう(=元の木阿弥)ので、どうしたものかと思ったのですが・・・
とりあえず、「見た感じ、何も表示されていないように見える」ということで、『条件付書式』での対応と
いうのはいかがでしょうか。

1)当該フォームをデザインビューで開く
2)当該テキストボックスを選択
3)メニューで「書式(O)→条件付き書式(D)」を選択
4)『条件付き書式設定』ダイアログが開くので、『条件1(1)』枠の...続きを読む


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング