Microsoft Access2003での印刷

このQ&Aのポイント
  • Microsoft Access 2003を使用して、CSVデータを印刷する方法について質問があります。
  • 質問の内容は、特定のフィールドが埋まったCSVデータをAccessで読み込み、特定の形式で印刷する方法です。
  • Accessにはセクションという機能があり、それを活用して希望の印刷フォームを作成することが可能です。
回答を見る
  • ベストアンサー

Microsoft Access2003での印刷

使用するAccess ( 2003 ) 下記のようなCSVがあります。        Field_A ,Field_B ,Field_C ,Field_D 1レコード目: A    ,B    ,     , 2レコード目: A    ,     ,C    , 3レコード目: A    ,     ,C    , 4レコード目: A    ,     ,     ,D 5レコード目: A    ,     ,     ,D 6レコード目: A    ,     ,     ,D 7レコード目: A    ,     ,     ,D Field_A は必ず埋まっていて、Field_Bは最初の1レコード目だけ。 Field_CとField_Dはレコードは可変で、Cが終了したらDになります。 この構成は他所から貰ってるだけなので、こちらでは変更したりできません。 この状態でMicrosoft Access を用いて下記のような印刷フォームを作成することは、可能でしょうか? Access 自体は使用した事はありますが、複雑なフォームを作成した事はありません。 色々事例を調べてセクションという機能がある事は分かりました。 ------------------------------------- | | A | | B | | C | C | 行が続くかぎり | |  D | D | 行が続くかぎり | | | | 締めの文言 -------------------------------------  改頁したらAは必ず出力して続きから ------------------------------------- | | A | | D | 行が続くかぎり | | | | 締めの文言 ------------------------------------- 質問したい事 1、Accessで、このような事は可能でしょうか? 2、可能な場合、セクションを上手く活用するのでしょうか、   それとも、何か異なる機能を使用するのでしょうか   比較的簡単に実現できる方を教えて頂きたいです。 3、Accessでは難しい場合、なにか印刷できるようなソフトをご存知でしょうか?   excelやwordの差込印刷では、無理かと思いました。

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

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

強いて、Accessのレポート機能等を利用する必要はないと感じました。 01:先頭行の列1を出力する。 02:先頭行の列2を出力する。 03:次の行を読み込む。 04:列3が存在すれば列3を出力する。 05:列3が存在しない時は列4を出力する。 06:改頁する手前まで04、05を繰り返す。 07:締めの文言を出力する。 08:04~07を繰り返す。 以上のようなプログラムを書けませんか?仮に書けないとしたら、作表ソフトの出番かと思いますよ。要は、単なる作表作業ですから・・・。 1、Sheet1に呼び込む。 2、Sheet2の先頭で[締めの文言]を定義する。 3、先頭行の列1を出力する。 4、先頭行の列2を出力する。 5、03~07に相当する関数を定義する。 6、以下、ツツーッ。 こういうアプローチもあろうかと思いますよ。

onefuu
質問者

お礼

ご回答、並びに実際の例まで挙げていただきありがとうございます。 プログラミングはできないのですが、挙げて頂いたのを見ながら、Accessを作成していこうと思います。 本当にありがとうございました。

その他の回答 (8)

回答No.9

<補足>「締めの文言」の出力 Option Compare Database Option Explicit Dim isWriteFooter As Boolean Private Sub グループフッター0_Format(Cancel As Integer, FormatCount As Integer)   isWriteFooter = True End Sub Private Sub ページフッターセクション_Format(Cancel As Integer, FormatCount As Integer)   Cancel = iisWriteFooter   isWriteFooter = False End Sub 添付図のように「締めの文言」を最後のページの行末に表示する場合は、少し工夫される必要があります。

回答No.8

※グループ化しなければレコード順に出力されます。 ※一度切りの出力であれば、それでもOKかと思います。

回答No.7

【補足】列[ID]の付加が必要か? 添付図は、Col2 ではなく列[ID](非表示)で並び替えています。

回答No.6

補足:レポート画像

回答No.5

【訂正】実際にテストしたら・・・ 先のやり方は出力順の制御に問題があって、結局は、つぎのようなクエリを作るのが一番でした。この場合、トップ行の複数化は無用です。 SELECT  T1.Field1 AS Col1,  T1.Field2 & T1.Field3 & T1.Field4 AS Col2 FROM T1; これですと、リスト順に出力されるようです。

回答No.4

「締めの文言」は各ページの下部に表示するのですね。 見落としてました。 前回の回答でレポートフッターに「締めの文言」を配置としましたが、 ページフッターに「締めの文言」を配置する、に訂正します。

回答No.3

> 改頁したらAは必ず出力して続きから という仕様があるので、Accessのレポートだと比較的に簡単にできます。 CSVファイルを、インポートまたはリンクします。 これをレポートのレコードソースとします。 ページヘッダーに、Field_A を配置します。 これですべてのページのヘッダー部に「A」が表示されます。 詳細セクションに、Field_B ,Field_C ,Field_D を重ねて配置します。 背景スタイルを「透明」にしておくか、印刷時縮小を「はい」にしておきます。 レポートフッターに「締めの文言」を配置します。 以上です。

onefuu
質問者

お礼

ご回答ありがとうございます。 重ねて配置という技?などは私では到底思いつきもしません。回答頂いたのを見ながらチャレンジしてみようと思います。ありがとうございました。

回答No.2

補足:仮に Access を利用する場合は・・・。 1レコード目: A    ,B    ,     , 1レコード目: A    ,B    ,     , 2レコード目: A    ,     ,C    , 3レコード目: A    ,     ,C    , 4レコード目: A    ,     ,     ,D 5レコード目: A    ,     ,     ,D 6レコード目: A    ,     ,     ,D 7レコード目: A    ,     ,     ,D 上のように1レコード目を2行にすると、ほぼ何もしなくても目的を達成できるかと思います。 1、1レコード目を2行に。 2、テーブル[XXXX]に呼び込む。 3、ウィザードでレポート[XXXX]を生成する。 4、4つのフィールドを重ねる。 5、詳細部で1行目のAのみ Visibled=True にする。 6、詳細部で1行目以外のAを Visibled=False にする。 7、レポートの下部に[締めの文言]を付加する。 このような感じかと思います。

関連するQ&A

  • ACCESS サブフォームのフィールドにカーソルをあてる

    ACCESS2003で、VBAで簡単なプログラムを作っています。 <やっていること> ・フォームAからフォームBを開きます。 ・そのときにフォームAの番号と一致するデータをフォームBに表示します。 ・フォームBにはサブフォームCが埋め込んでいます。 このサブフォームCの中のフィールドDにカーソルが入っているようにしたいのですが、 Forms!サブフォームC!フィールドD.setfocus としたら、「カレントレコードには、フィールドDという名前のフィールドはありません」というエラーがでます。 フィールドDというフィールドは存在しています。 このような場合、どのように記述するのがよろしいのでしょうか。 よろしくお願いします。

  • Access2013 vbaサブフォームのレコード

    [Access2013 vba] ■したいこと サブフォームのレコードの中から、一レコードだけをチェックボックスなどで選択したいのですが、どのようにしたら出来ますでしょうか。 複数行選択は出来ないようにしたいです。 選択したのち、メインフォームの選択ボタンを押すと、そのレコードのID番号を取得して、呼出元のフォームのIDフィールドに代入したいです。 ■画面の流れ・・・ Aフォーム → 帳票型Bフォームで、レコードを選び「開く」ボタンを押す→ B 'メインフォームとCサブフォーム)が開く Cサブフォームのレコードをチェックボックスにチェックを入れて選択する B ' メインフォームの「選択」ボタンを押すと B ' メインフォームと、その前のBフォームが閉じて Aフォームに戻り、AフォームのIDフィールドに選択したIDが格納される。 よろしくお願いします。

  • アクセスのフォームでのレコード移動ができません。

    アクセスのフォームでのレコード移動ができません。A(管理番号)B(会社ID)C(部品ID)D(担当者ID)のフィールドがあるのですが、A~Dの全てに入力した場合はレコード移動ができます。でもCとDを空欄にしたままでは移動できません。リレーションシップをCとDともはずしても変わりませんでした。どこがおかしいのか良きアドバイスをよろしくお願いいたします。

  • アクセス フォームの設定

    テーブル【T-1】 フィールドA,主キー,数値型 フィールドB,テキスト型 フィールドC,テキスト型 フィールドD,テキスト型 フィールドE,テキスト型 フォーム【F-1】 テーブル【T-1】に入力用のフォーム,単票型 があります。 F-1でそれぞれのフィールドに対して入力スペースがあり(もちろんですが) A,B,C,D,Eと順番に入力していきます。 ここでエンターキーを押すと、次のレコードへ移るわけですが、 カーソルがEの位置にあるため、わざわざマウスでAの位置へ移動させないといけません。 同様に、入力項目がなく、A,B,Cと入力して次のレコードへ行くと、Cの位置にカーソルがあります。 これを、Aをホームポジションとして、次のレコードへ移ったときに 自動的にカーソルをAの位置にもってくるようにしたいのですが、 一体どうすればよろしいでしょうか?

  • Accessでの計算

    Access2002の質問です。 クエリに式のフィールドを追加して、そこで計算をさす場合、一つ前のレコードの値から引き算をするには、どうしたらいいのでしょう。 例えば次のような前回の入金日から今回の入金日までに要した 日数を求める場合です。 レコードの番号 フィールド フィールド フィールド(式)    ↓      ↓    ↓     ↓                    日付   入金額   経過日数    1  2002/03/01   1000     A    2  2002/03/11   2000     B    3  2002/03/15   1500     C    4  2002/03/20   3000     D A.B.C.Dを求めたいのです。    Aは当然0日です    Bはレコード番号1からレコード番号2に要した日数です(10日)    Cはレコード番号2からレコード番号3に要した日数です(4日)    Dはレコード番号3からレコード番号4に要した日数です(5日) Accessに挑戦して孤軍奮闘しています。 でも難しくわからない点が多くて挫折しかけています。 どうかお助けください。

  • ACCESSのフィールドの更新

    マイクロソフトACCESSフォームAでテーブルBのCフィールドの更新は出来るのですが、フォームDから連結でテーブルBのCフィールドの更新が出来ません。(同じようにして2個作成したシステムのうち1個は出来たのですが、もう1個がどうしても出来ません:テーブル,クエリ,フサブフォーム,フォームの違いを捜しているのですが見当たりません。)

  • Accessで2つのテーブルのデータの整合性を確認したい

    Accessで2つのテーブルのデータの整合性を確認したいのですが、よい方法を教えていただけませんか? 状況は以下のとおりです。 Aテーブル    a   b    c   d   e       1  111  222  333  444  555 2  666   777 888 999 100 3   110 112 113 114 115 Bテーブル    a   b    c   d   e       1  111 222 333 444 555 2  666 777 000 999 100 3   110 112 300 400 500 ・AテーブルとBテーブルがあり、それぞれのテーブルのa、b、dフィールドのみを対象に、その値がAテーブルとBテーブルとで等しいかどうか調べたい。 (c、eフィールドの値が異なっていても、a、b、dフィールドの値が同じであればそのレコードはOKとし、a、b、dフィールドで1つでも異なる値があればNGとし、抽出したい。 例えば、Bテーブルの1、2レコードはOKだが、3レコードはNG) ・それぞれのテーブルのaフィールドが主キーになっている。 うまく説明できず、わかりにくいかもしれませんが、よろしくお願いします。

  • アクセスの更新クエリの質問です。

    ちなみにAccess2007を使用しています。 A,B,C,Dというフィールドが有り、AフィールドにはCodeが入っています。 Bフィールドには"bb"という言葉、Cフィールドには"cc"という言葉にそれぞれ書き換え、Aフィールドには、今から更新する1レコードを抽出するため、更新クエリ実行時に、パラメーターを入力するように設定しました。 しかし、更新するレコードは、全45000件中、6000件くらいあり、いちいちコードを入れるのが大変です。 もともと、書き換えるためのコードリストがエクセルデータとして有り、Accessにインポートすれば、コードリストをAccessのテーブルにする事も出来ます。このテーブルを使って簡単に、書き換えることは出来ないものなのでしょうか?

  • Access2002について

    Access2002で次のようなデータがあり、 フィールドA |フィールドB | フィールドC --------------------------------------------  123    |  234   |  456    |  123   |   (1)  789    |  123   |   (1) フィールドBのデータが、フィールドAのデータの中に存在している時は、フィールドCに(1)と表示させる。 ・・・という処理をしたいのですが、どんな方法でやったらいいのでしょうか?レコード数は50万程あります。 よろしくお願いします。

  • Access2007で。

    Access2007で。 今Access2007を使ってちょっとしたシステムを開発してるのですが、フォーム内のテキストボックスに入力した文字列と、テーブル内のデータを参照する事ってできるのでしょうか? 例えば テーブルA、フォームBとして テーブルAには 問題番号 問題文 答え 上記のフィールドがあり、 フォームB内の解答テキストボックスと、テーブルAの答えフィールド内データを参照し、 同じデータがあった場合はフォームCを開き、データがなかった場合はフォームDを開く。 このような形にしたいのですができるのでしょうか? 無知な質問で恐縮ですが、ご教授ください。