閲覧いただきありがとうございます。
Access2003で出納簿を作成しておりますがよいアイデアがあれば教えて下さい。

レポートフッター制御なのですが、以下のデザインを使います。

-------------------------------------
レポートフッター
-------------------------------------
月計   収入  支出  差引残高
累計   収入  支出  差引残高

サブレポート-------------------------- 
 
      コメントA

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

上記のように、レポートフッターに出納簿の月計と累計を表示させ、
サブレポートを埋め込み、VBAで「コメントA」を書換えたいと思います。
なお、サブレポートは特定の条件の時にのみ表示させたいと思います。

しかしながら、このままだと、サブレポートの終わりまで常に、
大きめに印刷範囲に設定されてしまい、複数のページにまたがりやすく
なってしまいます。
(前頁に月計と累計を表示できるのに、サブレポート枠まで印刷範囲
とされてしまうからだと思います。)

そこで、私はサブレポートが必要でない場合には、
VBAでサブレポートの高さを0にし、レポートフッターの高さも
小さくすることで、レポートフッターの印刷範囲を小さめに制御し、
前頁になるべくおさめるようにチャレンジしておりますが、
もっと簡単に他の方法がございましたら、ご教授頂ければと思います。

よろしくお願い致します。

A 回答 (2件)

コメントが付きませんね・・・!



私は 見積書で 同様のフッターを設定してますが
最終ページで用紙一杯に印刷できるように ”空欄 (空白のデーター)”を挿入して居ります。
見栄えの良い見積書にする為です。

・・・・・・・・・・書斎データー最終行・・・・
          < 以下余白 >  挿入行1合目
  必要な空欄を計算して 挿入・・・
-------------------------------------
レポートフッター
-------------------------------------
サブレポート--------------------------    小計  **,***.***.-
                             :  値引   ▲**,***.-
                             :  消費税   ***,***.-
               コメントA         :  総合計 \**,***,***.-
                             :
--------------------------------------
の感じです。

印刷するデーター数を Dcount で取り込み
レポートヘッダーーに使う 行数 + レポートフッターに使う行数
を引いて 中間不利ページに印刷できる号数で割付て・・・
Mod 関数で 最終行に挿入する 行数を算出して・・・
空欄を付けてレポートにしてます。

結構手数がかかる作業です。が出来上がると 見栄えのあるレポートが
できました。
特に コントロールの高さに依って 1ページに印刷できる 行数がかわるので
ここでの調整には バグ取りと 微調整に 時間が掛かりました。
一応 500行までの実績は出来てますが・・・それ以上も多分大丈夫?
と思われるまでに仕上がってる筈なんですが・・・ダミーデーターでの
検証を 事務員に指示してますが、通常魚無に追われて 進んでません。

以上参考にして下さい。
    • good
    • 0
この回答へのお礼

007MUKADE様

丁寧なご回答をいただきましてありがとうございます。
Accessのレポート機能は、クセがあるので困っております。

やはり複数ページの場合には、帳票作成時に行数のチェックをするなど、
時間が掛かりますね。

頂いた回答を参考にさせて頂きます。

お礼日時:2009/05/17 10:37

競馬新聞をつくってます。


頭数に応じてグラフの高さきりかえてます。
今回はレポートを2種類にして切り替えるとか
親子リンクをさせない手法がとれそうですが
印刷時縮小もできるかな?
未検証です。
本日の36ページ5M近いので。。。。
    • good
    • 0
この回答へのお礼

umazanpai様

ご回答いただきありがとうございます。

そうですね…今回は条件分岐でレポートを分ける処理を行い、
併せて、1ページの最大印刷可能行数を演算しする手法を検討します。

レポートフッターにテキストボックス等のオブジェクトを入れ、
可視を「いいえ」にしても、印刷時に縮小(詰める)ができないよう
なのが、問題なのですが…。

お礼日時:2009/05/17 10:43

このQ&Aに関連する人気のQ&A

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

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

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

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

QAccessでグループフッターの非表示

[Access2007]

フォーム上のボタンクリックでレポートを開くようにしています。
このとき、ある条件でレポートのグループフッターを非表示したり、
グループフッターの改ページを操作したいと考えています。

レポートを開いてからは、
Me.グループフッター1.visible=false で可能かと思いますが、
レポートを開くときはどのようにすればいいのでしょうか?

Aベストアンサー

レポートの開くとき(OPEN)イベントで設定すればいいのでは?

QACCESSでフォームを使って、テーブルを参照、データ入力、データ更新をしたいのです

フォームを使って、テーブルを参照、データ入力、データ更新をしたいのです。

売上テーブル

 ID   商品コード  日付    金額 
 1    G1     20080101  532153
 2    G1     20080101  564281
 3    G1     20080301  538123
 4    J4     20080301  124531
 5    J4     20080302  125483

ID:オートナンバー 商品コード:数値型 日付:数値型 金額:数値型

これを使い、
フォームではまず

レコードナンバーを入力画面
       ↓
レコード番号を入れると、そのレコードのデーターが画面に表示され、
その画面で修正可能
       ↓
 保存 ボタンで保存

という流れです。

レコードナンバーはIDを使おうと思っています。

データの量が莫大な為、コンポボックスなどは使えません。

できるだけ、VBAなどは使わずに作りたいです。

よろしくお願い致します。

フォームを使って、テーブルを参照、データ入力、データ更新をしたいのです。

売上テーブル

 ID   商品コード  日付    金額 
 1    G1     20080101  532153
 2    G1     20080101  564281
 3    G1     20080301  538123
 4    J4     20080301  124531
 5    J4     20080302  125483

ID:オートナンバー 商品コード:数値型 日付:数値型 金額:数値型

これを使い、
フォームではまず

レコードナンバーを入...続きを読む

Aベストアンサー

まずそのテーブルを基にしてフォームを作成します。
そのフォームのヘッダー部分にテキストボックスを配置後、一旦
上書き保存。
フォームのレコードソースを
SELECT *
FROM テーブル名 WHERE ID=[Forms]![フォーム名]![テキストボックス名]
とします。
次にテキストボックスの更新後処理に
Me.Requery
とすれば完成です。
フォームを開いてテキストボックスにID入力後エンターしてください。

保存に関しては、コマンドボタン作成後クリック時イベントに
DoCmd.RunCommand acCmdSaveRecord
とすれば良いでしょう。

この手のモノは検索すれば相当数ヒットするので、そちらを参考にされるのもよろしいかと。

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

QAccessレポートで特定条件で改ページしたい

はじめましてこんばんは。
Accessのレポートで特定の条件で改ページしたいため質問させてもらいます。

特定の条件とは
・地域名が変わる
・もしくは住所が変わる
という2点です。
現在テーブルとレポートを作るところで止まっております。
サンプルデータベースで行くと北海道は札幌市、旭川市、小樽市、北見市の4ページに分けたいと言う意味です。

改ページのコントロールを設置したところまではよいのですが条件の入力がうまくいきません。
どなたかご伝授いただけないでしょうか?

http://hiyokokko.s78.xrea.com/img/test.zip

上記に作りかけのアクセスのファイルが置いてありますので見ていただけたら幸いです。

宜しくお願い致します。

Aベストアンサー

改ページコントロールは使いません。

(1)
並べ替え/グループ化の設定でフィールド2を降順で
設定し、グループヘッダを「はい」にし、
表示された「フィールド2ヘッダ」の上でプロパティ
を表示し、「改ページ」を「カレントセクションの後」
に設定します。
これで、地域が変わるとページが変わります。
(2)
次に、
>札幌市、旭川市、小樽市、北見市の4ページに分けたい
ということですが、これはフィールド4をそのまま使うわけには
いかないので、新たにフィールド6を設定し、そこに
札幌市は1、旭川市は2のように市によって番号を
付与します。
後は、(1)と同様に、
並べ替え/グループ化の設定でフィールド6を降順で
設定し、グループヘッダを「はい」にし、
表示された「フィールド6ヘッダ」の上でプロパティ
を表示し、「改ページ」を「カレントセクションの後」
に設定します。

以上です。

QAccessの桁区切りについて教えてください。

アクセスのレポートの金額に、桁区切りのカンマを付けたいと思っています。
プロパティの書式を通貨にすると¥マークがついてしまいます。
合計は付いてもいいのですが、内訳には¥マークを付かないように桁区切りだけにしたいのです。

そのため、書式に『###,##0』としました。
できましたが、小数点以下が表示されません。

小数点を表示したいので『###,##0.###』としたら、『59,180.000』となってしまいます。
小数点の指定を自動から3桁表示に変えましたが、うまくいきません。

教えていただきたい内容としては、
・金額の表示に桁区切りのカンマを付けたい。
・でも¥マークは付けたくない。
・小数点以下該当があるもののみ3桁まで表示させたいが(5,500.365)、
 小数点以下がないものは小数点以下は表示させたくない(5,400)。

ぜひともアクセスを使いこなしている方、お教えください。

Aベストアンサー

この内容からですと、[金額]フィールドを「レコードの内容により、書式を変えたい」と
いうことですので、テキストで処理する方法よりないかと思います。(Access2000)

VBAによる「ユーザー定義関数」を使う方法ですが、それで良かったら手順を
詳しく書きますので、テストしてみてください。

・テーブルのデザインで[金額]フィールドを「数値型」の「単精度浮動小数点型」か
 「倍精度浮動小数点型」にします。

・「モジュール」の新規作成で開いたコードウィンドウに下記コードをコピーして
 貼り付けます。

・フォームのレコードソースにするためのクエリを作成します。
 必要なフィールドをQBEグリッド(画面の下側)にドラッグした後、
 新規フィールドに 例えば、 金額Txt:Valtxt([金額]) と入力します。

・レポートの[金額]のコントロールソースに、この[金額T]を指定します。
 この書式で「配置」を右に設定します。

これで、少数部がない数値は、整数部だけを表示し、位取りの , が付きます。
小数部がある場合は、4位を四捨五入します。(通常と同じ)
その結果、右側に 0 が付いた場合は、表示しません。

ご承知の上とは思いますが、表形式の場合、少数点位置が揃わなくなりますので
見ずらくなってしまいます。

このようなもので如何でしょうか。

Function Valtxt(V As Double) As String
Dim T As String
Dim N As Integer
T = Format(V, "#,##0.000")
For N = Len(T) To InStr(T, ".") Step -1
  If Mid(T, N, 1) = "0" Then
    T = Left(T, N - 1)
  Else
    Exit For
  End If
Next N
If Right(T, 1) = "." Then T = Left(T, Len(T) - 1)
Valtxt = T
End Function

この内容からですと、[金額]フィールドを「レコードの内容により、書式を変えたい」と
いうことですので、テキストで処理する方法よりないかと思います。(Access2000)

VBAによる「ユーザー定義関数」を使う方法ですが、それで良かったら手順を
詳しく書きますので、テストしてみてください。

・テーブルのデザインで[金額]フィールドを「数値型」の「単精度浮動小数点型」か
 「倍精度浮動小数点型」にします。

・「モジュール」の新規作成で開いたコードウィンドウに下記コードをコピーして
 ...続きを読む

QAccess サブフォームでの選択行の取得

こんにちは。

Access初心者です。

サブフォームでテーブルの項目を表示させていますが、
選択された行を取得する方法はありますか?
サボフォームの下の方に現在選択されているレコード数が表示されてますが、その値でかまいません。

調べているのですが、なかなか検討がつきません。
宜しくお願い致します。

Aベストアンサー

フォーム名がフォーム1、サブフォームコントロールの名前がサブフォーム1だとすると、

Forms!フォーム1!サブフォーム1.Form.CurrentRecord

で取得できます。
(「Forms」と「Form」がありますのでご注意下さい)


また、フォーム1にコードを記述する場合であれば

Me!サブフォーム1.Form.CurrentRecord

サブフォーム1へのコード記述であれば

Me.CurrentRecord

という構文によっても、それぞれ取得が可能です。

QAccessのフォーマット時イベント

宜しくお願いいたします。

Accessを使用していますが、
レポートの詳細セクションの[フォーマット時]
イベントについて教えてください。

この[フォーマット時]というイベントは、具体
的にいうと、どんなイベントのことを指してい
るのでしょうか?

[クリック時]イベントはマウスがクリックされ
たときなのは良く分かりますが、
レポートの詳細セクションがフォーマットされ
るときとはどういう意味なのでしょうか?

教えてください。

Aベストアンサー

通常レポートを印刷(プレビュー)するとき、まず内部でそのイメージを構築します。

このとき、一般的には設定してある紙の印刷可能領域からページヘッダーと、ページフッターを確保します。

その後に詳細部分を繰り返して残りの印刷可能領域に詳細を詰めていきますが、あるところまで行ったときに詳細の途中で印刷可能領域が足りなくなったとします。このときにその一つ前のレコードまででイメージを再フォーマットします。(プロパティーで項目を1ページに収める設定がしてある場合)

このようにフォーマット時は場合により数回繰り返されたりもします。フォーマットイベント内で回数のカウントなどしてみるとよくわかると思います。

また、フォーマットイベントの引数に何回フォーマットを行っているかというのもあったと思います。
必要により1回目のフォーマとの時のみに何か処理をさせるといったことも可能です。(たとえばSUMを使わずに項目の合計を求めるなどと行ったこと)

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フォームを開くときに、コンボボックスの値を選択(アクセスVBA)

こんにちは。
アクセスVBAで、フォームを開いたとき
(フォームのOpenイベント)に、
コンボボックスの値を選択したいのですが、
どういう方法が、あるでしょうか。

理想は、
フォームのOpenないし、Loadイベント内で、
コンボ0.ItemData(2).Selected
と、書くような感じです。
(無論、Selectedは使えませんでした)。

よろしくお願いします。

Aベストアンサー

これでいいのかな?
※テキスト書きなので検証していません

If コンボ0.ListCount > 0 Then
  コンボ0.Value = コンボ0.Column(0, 2)
End If

QAccess ページフッターとレポートフッター

こんにちは!
レポートの毎ページに小計、最後のページだけ小計と合計を印刷したいのですが、
私はページフッターに小計、レポートフッターに合計の欄を作りました。
すると最後のページで、ページフッターの上にレポートフッターが来るので、合計小計の順番で印刷されてしまいます。
これではおかしいです。
皆さんはどのように回避していますか?
教えて下さい。宜しくお願いします。

Aベストアンサー

(1)レポートフッタを別ページに印刷して、
(2)そのページにはページフッタを印刷しない。

というのではどうですか?
もしそれでよければ、手元に Access がないので確認していませんが、

(1)は、レポートフッタの[改ページ]プロパティを[カレントセクションの前]にして、
(2)は、レポートの[ページフッタ]プロパティを[レポートフッタ以外]にして、

できないでしょうか。だめでしたら、ごめんなさい。


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

人気Q&Aランキング

おすすめ情報