accessのフォームをそのままレポートにする簡単な方法?があったらアドバイスいただけませんか。

#accessで作成されたシンプルなプログラムを使用している立場。accessはテーブルでデータを検索したりするだけの使用状況。
#フォームで表示されている内容をそのまま印刷したいことが多い

#access2000 access2002あり。

このQ&Aに関連する最新のQ&A

A 回答 (4件)

すみません今確認しましたら先の回答の内容に書いた「帳票」は「表形式」でした。



>オートレポートの単票形式で試みたのですが、どうも1ページに1レコードだけの表示ができません。1ページにレコードが連続して表示されます。

1つのレコードを区別する情報はありますか?
例えば「No」というフィールドがあって重複しないように設定してあるとかです。別に重複しないように設定していなくても特定のレコードを指定できるフィールドがあれば結構です。
先ほど申し上げた条件を満たす「No」フィールドがあったとすると、レポートのデザイン画面で、「表示」→「並べ替え/グループ化の設定」を選び、開いたウィンドウで「フィールド/式」に「No」を選択し、グループヘッダー、グループフッターを「はい」にしてウィンドウを閉じます。
すると「Noヘッダー」「Noフッター」が表示されますので、「Noヘッダー」にテキストボックス「No」を移動します。「Noヘッダー」と「詳細」の間と「ページフッター」と「Noフッター」の間と詰めておきましょう。
「Noフッター」のプロパティを表示し、「改ページ」を「カレントセクションの後」にします。
するとレコードごとに改ページされます。同様の方法でグループヘッダー(先に作ったNoフッターの総称です)を増やすといろんな条件で改ページやグループ化、重複データの非表示などができます。

先ほどの回答では不十分でした申し訳ありません。
    • good
    • 0
この回答へのお礼

詳しい解説ありがとうございました。(^O^)
お蔭様で目的のことが無事できました。
accessはVBAを覚えなければだめなのかと触るのをはばかったいましたが、こんな感じでできることも多いのですね。目から鱗という感想でした。

このようなことも少しずつ勉強していきたいと思います。

お礼日時:2001/11/23 10:20

フォームはテーブルのデータをそのまま追加更新できるようにしてあるだけのものですか?


だとすると、フォームの基になっているテーブルを基にオートレポートで簡単に作成できます。「帳票」か「単票」か選べるので、1つのレコードで1枚の紙に印刷する場合は「単票」で、1枚の紙に複数のレコードを印刷する場合は「帳票」にします。

もし、フォームでフィルターなどを使用してデータを抽出して表示しているならば、基になっているテーブルでクエリーを作成して、抽出条件にフォームと同じ内容が表示されるように設定し、そのクエリーを基にオートレポートで作成できます。

レポートに関する知識が無くてもある程度のものは出来ます。
もっと綺麗に見せたいならば、テキストボックスを動かしたり、細かな設定が出来ますので、不明なことがありましたら補足からでもお知らせください。

この回答への補足

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

>フォームはテーブルのデータをそのまま追加更新できるようにしてあるだけのものですか?

そうです。
オートレポートの単票形式で試みたのですが、どうも1ページに1レコードだけの表示ができません。1ページにレコードが連続して表示されます。

#access2000使用
#なにかやり方がおかしいのでしょうか。

補足日時:2001/11/23 08:41
    • good
    • 0

「ファイル」から「名前を付けて保存」を選んでその中の、貼り付ける形式を「レポート」にして下さい。



 単に印刷したいだけでしたら、フォームをそのまま印刷するのではダメですか?

この回答への補足

こういう方法もあるのですね。
全然知りませんでした。(当然ながら・・)

フォームを印刷だとちょっと体裁がうまくないので。
きちんとしたものなら、やはり、VBAなどで作るしかないのでしょうね。

補足日時:2001/11/22 08:44
    • good
    • 0

うろ覚えですみませんが、まだ回答が付いていないようですので…。

(^_^;
ACCESSって帳票ウィザードみたいな機能がありませんでしたか?
簡単なものを作るときに使ったことがある様な気がするのですが。
確かご質問の様なパターンも出来たと思います。

#外していたらごめんなさい。<(_ _)>
    • good
    • 0

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

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

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

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

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

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

QAccess2002 フォームを閉じるたびに「このフォームの変更を保存しますか?」と表示される

度々すみません。
毎度お騒がせの初心者です。

表題のとおり、フォームを閉じる際、フォームの変更を保存しますか?というメッセージが表示され、保存を迫られます。

このフォームは、他のフォームからフィルタをかけて呼び出されるもので、プロパティを広げると、
フィルタ:[特定フィールド]='123456'
となっています。
この「123456」が毎回変わるからかな?と思ったりもしているのですが、解決策、回避策がわかりません。

どなたかご教授いただけると幸いです。

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

Aベストアンサー

フォームを保存せずに閉じて特に問題が
なければ、

ボタンを一つ追加。
ボタンのクリックイベントで

DoCmd.SetWarnings False
DoCmd.Close acForm, Me.Name, acSaveNo

としたらどうですか。

QAccess2002レポートについて困ってます。

現在データベース作成中です。フォームにコマンドボタンで印刷されるようにしたいのですが、現在開いているレコードのみを印刷してほしいのですが、方法がわからなく困っています。マクロで、Where条件などで式を入れるのでしょうが素人なものでまったくわからないんです。印刷プレビューで確認して、ページ指定での印刷はできるのですが、手間を省くためにボタンひとつで現在のレコードが印刷させるようにするにはどうのようにすればよいでしょうか?ご指導のほうよろしくお願いいたします。

Aベストアンサー

>現在開いているレコードのみを印刷・・
単票型のフォームと解釈して
一番簡単な方法はそのレコードがあるテーブルを元にレポートを作成します。
レポートのプロパティを開きデータのレコードソースの右にある[・・・]をクリックしクエリビルダーを開きキーになるフィールドにテーブルを元にフォームを作成した同じフィールド名を抽出条件に記述します。
例えばクエリのIDというフィールドの抽出条件にForm1というフォームのIDというフィールドの値を抽出条件にする場合
クエリのIDの抽出条件に =[Forms]![Form1]![ID] と記述。
フォームのボタンを作成する時にレポートの操作でレポートのプレビューを指定し作ればフォームに表示されているレコードをボタンをクリックすることによって表示されているレコードのプレビューを表示できます。

QACCESS フォームをそのまま印刷について

お世話になります。
ACCESSのフォームを印刷する方法ってどうすればいいのでしょうか?レポートは使いたくなくて・・・・
ボタンをクリックしたらボタンを非表示にして印刷させたいのですが、やり方がわかりません。
また、印刷プレビューを表示させるボタンも作りたいのですが・・・

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

Aベストアンサー

>ACCESSのフォームを印刷する方法ってどうすればいいのでしょうか?
普通に[ファイル][印刷]とすれば印刷できます
どのような形で印刷されるかは印刷プレビューで確認できます

>ボタンをクリックしたらボタンを非表示にして印刷させたいのですが
VBAなら印刷はPrintformメソッドです
印刷時非表示はDisplayWhenプロパティーで設定できます

>印刷プレビューを表示させるボタンも作りたいのですが・・・
プレビューはレポートにしかないようですね
フォームは表示されているんですよね、だったら要らないのでは

>レポートは使いたくなくて・・・・
フォームと同じフォーマットのレポートなら
右クリック、名前をつけて保存でレポートを選ぶだけで簡単に作れますよ

QAccess2002 フォーム上にないフィールドに入力するには

フォーム上にあるボタンを押すと、あるフィールドに数値を入力する
VBAを作りましたが、フィールドには入力されませんでした。
色々やってみたらフォーム上にフィールドが無いと入力されないようでした。
これはAccess2002の仕様なのでしょうか。
それともそのための表記があるのでしょうか。

例)
顧客ID = 1

単純にこれだけのことがしたいのですがうまくいきません。
よろしくお願いします。

Aベストアンサー

余計なことかもしれませんが、フォーム上のテキストボックスには、アクセスが勝手にフィールドと同じ名前をつけます。が、フィールドにつながっている別のものです。
ですから、テキストボックスにフィールドAとおなじ名前をつけて、フィールドBをソースにしてもよいのです(やったことありませんが、できるはずです)。

本題に戻して、アクションクエリを呼び出すには DoCmd オブジェクトの OpenQuery メソッドを使用します。
例えばコマンドボタンのクリックイベントに

Private Sub コマンドボタン_Click()
DoCmd.OpenQuery "クエリ名"
End Sub

と書きます。
クエリ(ご質問の場合は更新クエリになりますが)は、普通にクエリビルダで作成します。
クエリが選択クエリなら、その結果が表示されます。
詳しくはヘルプをご参照ください。

ついでに ADO を使ったやり方。

Private Sub コマンドボタン_Click()
Dim Cnxn As ADODB.Connection
Set Cnxn = CurrentProject.Connection
Cnxn.Execute "SQL"
End Sub

SQLとは、言ってみればクエリを逐語的に記述したものです。
ADOは、VBAから直接テーブルを操作するしくみです。

余計なことかもしれませんが、フォーム上のテキストボックスには、アクセスが勝手にフィールドと同じ名前をつけます。が、フィールドにつながっている別のものです。
ですから、テキストボックスにフィールドAとおなじ名前をつけて、フィールドBをソースにしてもよいのです(やったことありませんが、できるはずです)。

本題に戻して、アクションクエリを呼び出すには DoCmd オブジェクトの OpenQuery メソッドを使用します。
例えばコマンドボタンのクリックイベントに

Private Sub コマンドボタン_Click(...続きを読む

QAccess2002 フォーム間のデータ受け渡し条件による動作分岐

いつもお世話になっております。

未だ初心者のものです。

表題ではわかりにくいと思いますが、ああしか書けなかったのでお許し下さい。

本題ですが、人員の情報フォーム(フォームA)に、コマンドボタンを設け、他のフォーム(フォームB)を開く作りにしています。
コマンドボタンを作成するときに自動起動されるウィザードにしたがって、人員のIDとマッチするデータを表示するよう、コマンドボタンは設定されています。

フォームBの元になっているテーブルに、その人員のIDと付帯情報が入っていればフォームBはうまく表示されるのですが、まだ付帯情報が入っていない場合、当たり前ですが空白のフォームが現れます。

そこでご相談なのですが、フォームBの元テーブル(あるいはクエリ)にデータがない場合はフォームB用のデータ入力をさせるフォーム(フォームC)を表示させる様にはできませんでしょうか?

これだけの情報ではイメージできないかも知れませんので、追加情報が必要であれば、逆質問をお願いします。

よろしくご回答のほど、お願いします。

Aベストアンサー

幾つか方法はありますが、比較的わかりやすいと思われる、DCount関数で
レコードの有無を確認し、If文で条件分岐、という方法をご紹介します:

'【ウィザードで作られたVBA(コマンドボタン名=コマンド3)】
Private Sub コマンド3_Click()
On Error GoTo Err_コマンド3_Click

  Dim stDocName As String
  Dim stLinkCriteria As String

  stDocName = "フォームB"
  
  stLinkCriteria = "[ID]=" & Me![ID]
  DoCmd.OpenForm stDocName, , , stLinkCriteria

Exit_コマンド3_Click:
  Exit Sub

Err_コマンド3_Click:
  MsgBox Err.Description
  Resume Exit_コマンド3_Click
  
End Sub

'【加筆修正したコード】
Private Sub コマンド3_Click()
On Error GoTo Err_コマンド3_Click

  Dim stDocName As String
  Dim stLinkCriteria As String
  
  stLinkCriteria = "[ID]=" & Me![ID]

  'DCountの結果で、開くフォーム名(→stDocName)を切替
  If DCount("*", "フォームBの元テーブル", stLinkCriteria) = 0 Then
    stDocName = "フォームC"  'レコード不在(=0)時はフォームCを指定
    DoCmd.OpenForm stDocName  'stLinkCriteriaは使用しません
  Else
    stDocName = "フォームB"  'レコード存在時はフォームBを指定
    DoCmd.OpenForm stDocName, , , stLinkCriteria
  End If

Exit_コマンド3_Click:
  Exit Sub

Err_コマンド3_Click:
  MsgBox Err.Description
  Resume Exit_コマンド3_Click
  
End Sub

・・・以上です。
なお、コードの理解を最優先に考え、「ID自体が空白(Null)」といった場合の
例外処理は入れていません。
(呼び出しもとのフォームAが、そういうデータを表示しない場合、杞憂という
 ことにもなりますので・・・)

幾つか方法はありますが、比較的わかりやすいと思われる、DCount関数で
レコードの有無を確認し、If文で条件分岐、という方法をご紹介します:

'【ウィザードで作られたVBA(コマンドボタン名=コマンド3)】
Private Sub コマンド3_Click()
On Error GoTo Err_コマンド3_Click

  Dim stDocName As String
  Dim stLinkCriteria As String

  stDocName = "フォームB"
  
  stLinkCriteria = "[ID]=" & Me![ID]
  DoCmd.OpenForm stDocName, , , stLinkCriteria

Exit_コマンド3_Click:...続きを読む


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

人気Q&Aランキング

おすすめ情報