Microsoft Access2003での印刷
- 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の差込印刷では、無理かと思いました。
- onefuu
- お礼率41% (5/12)
- その他(データベース)
- 回答数9
- ありがとう数13
- みんなの回答 (9)
- 専門家の回答
質問者が選んだベストアンサー
強いて、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、以下、ツツーッ。 こういうアプローチもあろうかと思いますよ。
その他の回答 (8)
- 山田 太郎(@f_a_007)
- ベストアンサー率20% (955/4574)
<補足>「締めの文言」の出力 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 添付図のように「締めの文言」を最後のページの行末に表示する場合は、少し工夫される必要があります。
- 山田 太郎(@f_a_007)
- ベストアンサー率20% (955/4574)
※グループ化しなければレコード順に出力されます。 ※一度切りの出力であれば、それでもOKかと思います。
- 山田 太郎(@f_a_007)
- ベストアンサー率20% (955/4574)
【訂正】実際にテストしたら・・・ 先のやり方は出力順の制御に問題があって、結局は、つぎのようなクエリを作るのが一番でした。この場合、トップ行の複数化は無用です。 SELECT T1.Field1 AS Col1, T1.Field2 & T1.Field3 & T1.Field4 AS Col2 FROM T1; これですと、リスト順に出力されるようです。
- hatena1989
- ベストアンサー率87% (378/433)
「締めの文言」は各ページの下部に表示するのですね。 見落としてました。 前回の回答でレポートフッターに「締めの文言」を配置としましたが、 ページフッターに「締めの文言」を配置する、に訂正します。
- hatena1989
- ベストアンサー率87% (378/433)
> 改頁したらAは必ず出力して続きから という仕様があるので、Accessのレポートだと比較的に簡単にできます。 CSVファイルを、インポートまたはリンクします。 これをレポートのレコードソースとします。 ページヘッダーに、Field_A を配置します。 これですべてのページのヘッダー部に「A」が表示されます。 詳細セクションに、Field_B ,Field_C ,Field_D を重ねて配置します。 背景スタイルを「透明」にしておくか、印刷時縮小を「はい」にしておきます。 レポートフッターに「締めの文言」を配置します。 以上です。
お礼
ご回答ありがとうございます。 重ねて配置という技?などは私では到底思いつきもしません。回答頂いたのを見ながらチャレンジしてみようと思います。ありがとうございました。
- 山田 太郎(@f_a_007)
- ベストアンサー率20% (955/4574)
補足:仮に 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のテーブルにする事も出来ます。このテーブルを使って簡単に、書き換えることは出来ないものなのでしょうか?
- ベストアンサー
- その他MS Office製品
- 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を開く。 このような形にしたいのですができるのでしょうか? 無知な質問で恐縮ですが、ご教授ください。
- ベストアンサー
- Visual Basic
お礼
ご回答、並びに実際の例まで挙げていただきありがとうございます。 プログラミングはできないのですが、挙げて頂いたのを見ながら、Accessを作成していこうと思います。 本当にありがとうございました。