今だけ人気マンガ100円レンタル特集♪

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

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

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

A 回答 (1件)

>ACCESSのフォームを印刷する方法ってどうすればいいのでしょうか?


普通に[ファイル][印刷]とすれば印刷できます
どのような形で印刷されるかは印刷プレビューで確認できます

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

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

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

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

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

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

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

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

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

QAccessのフォームで、画面表示されているものを印刷する

いつも大変お世話になっております。m(_ _)m

Accessのフォームにて、データを入力します。
入力している画面に「印刷」というボタンを作り、入力し終わった情報をレポート印刷(出力)したいです。

フォームもレポートも作成済みです。
データの区分けとしては、「管理No.」というフィールドが主キーであります。「現在画面に表示されているデータ」とは、「現在画面に表示されているデータの管理No.」ということになります。
その管理No.を抽出条件とし、印刷を行いたいです。

ごく簡単な方法で教えてほしいと思います。

なんとなく想像からすると、クエリを作り、抽出条件にその時の画面の管理No.を取り込む・・・というか・・・そんなイメージはありますが、どうすればいいのか分かりません。

よろしくお願い致します。m(_ _)m

Aベストアンサー

#3さんの仰るとおり、入力直後(保存前)に印刷ボタンを押すと入力中の内容は反映されませんね。忘れていました。
プログラムを修正します。

Private Sub コマンド1_Click()
 Me.Refresh
 If IsNull(Me![管理No.]) = False Then
  DoCmd.OpenReport "レポート名", acViewNormal, , "[管理No.]=" & Me![管理No.]
 End If
End Sub

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

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

Aベストアンサー

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

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で表示されているフォームだけをレポートに出したい

アクセスで、入力したフォーム内容をすぐにレポートで印刷できるよう、コマンドボタン作成ウィザードで、レポートの操作→レポートのプレビューを行ったのですが、IDが1のものが表示されてしまいます。。
これを、表示されているフォームIDのものをプレビューさせることはできますでしょうか?

色々調べてみたのですが、分からなかったので。。
宜しくお願いします!

Aベストアンサー

> 色々調べてみたのですが、分からなかったので
調べ方が良くなかったのでしょうね
ウィザードで作成すると
Private Sub コマンド61_Click()
On Error GoTo Err_コマンド61_Click

Dim stDocName As String

stDocName = "フォーム名"
DoCmd.OpenReport stDocName, acPreview

Exit_コマンド61_Click:
Exit Sub

Err_コマンド61_Click:
MsgBox err.Description
Resume Exit_コマンド61_Click

End Sub
こんなコードが出来ていると思います。
それぞれの単語の上にカーソルを持っていって、F1 キーを押すとそれぞれのヘルプが
現れます。
でAccess2002の場合ですが、OpenReportのヘルプで
WhereCondition で何かを指定すると何とかなりそうなのが分かります。
関連項目を見ると「"OpenReport/レポートを開く" アクション」が有ります。
ここに貴方の望むものが載っています。
ヘルプより抜粋
-------------------------
レポートを開き、レポートのコントロールの値を使ってレコードを制限するには、次の構文を使用します。

['(フィールド名)'] = Forms!['(フォーム名)']!['(フォームのコントロール名)']

'(フィールド名)' には、開くレポートの基になるテーブルまたはクエリにあるフィールド名を指定します。
<フォームのコントロール名> には、レポートのレコードを制限するための値を持つ、フォームのコントロール名を指定します。
--------------------------
なので
DoCmd.OpenReport stDocName, acPreview

DoCmd.OpenReport stDocName, acPreview, , "[ID]=" & Forms![フォーム名]![ID]
にすれば良いのが分かるかと思います。なお、下記の書き方もあります
DoCmd.OpenReport stDocName, acPreview, , "[ID]=" & Me!ID

> 色々調べてみたのですが、分からなかったので
調べ方が良くなかったのでしょうね
ウィザードで作成すると
Private Sub コマンド61_Click()
On Error GoTo Err_コマンド61_Click

Dim stDocName As String

stDocName = "フォーム名"
DoCmd.OpenReport stDocName, acPreview

Exit_コマンド61_Click:
Exit Sub

Err_コマンド61_Click:
MsgBox err.Description
Resume Exit_コマンド61_Click

End Sub
こんなコードが出来ていると思います。
それぞれの単語の上...続きを読む

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で別テーブルの値をフォームに表示したい

初めてのAccessで分からない事があり質問させてください。

<会社テーブル>
会社ID
会社名
住所

<社員テーブル>
会社ID
社員名
ソート番号

*1社に対し複数の社員レコードが存在

以上のようなテーブルがあるとします

現在「会社テーブル」を表形式で一覧表示しています
会社ID,会社名、住所とフィールドが並んでいるのですが、その後ろに「社員テーブル」のソート番号が一番若い社員名を表示したいと考えています(現状は番号関係なく表示させる方法すら分かりません)

色々いじくりまわしたのですが、初めてAccessをさわる事もあってよくわかりません

リレーション等でひっぱってくる事ができるのでしょうか?

どなたか教えて頂けませんでしょうか

何卒よろしくお願い致します

PS.Access2013で作成中です

Aベストアンサー

単純にテーブル[会社]のみでフォームを作成し、社員表示用テキストボックスを追加。そして、そのプロパティを表示し

コントロールソース=DBLookup("SELECT 社員名 FROM 社員 WHERE 会社ID=" & [会社ID] & " ORDER BY ソート番号")

これは、以下の標準モジュールに登録したユーザ関数 DBLookup()を使っています。これで、クエリを用意しなくても目的を達成できます。

さて、かかるユーザ関数を標準ライブラリに登録したくない場合、

1、"社員ソートクエリ"を作成します。

SELECT 社員.会社ID, 社員.社員名
FROM 社員
ORDER BY 社員.ソート番号;

2、コントロールソースに次のように書きます。

=DLookUp("社員名","社員ソートクエリ","会社ID=" & [会社ID])

http://office.microsoft.com/ja-jp/access-help/HA001228825.aspx

DLookup()については、マイクロソフトの解説を参照されてください。

【DLookup()の限界を破るにはVBAで同じ関数を作るしかない】

マイクロソフトの解説を読めば判りますが、ORDER BY 節を指定する引数が用意されていません。ですから、どうしても、"社員ソートクエリ"を作成するという手間が必要となります。そこで、SQL文を引数とするDBLookup()をVBAで書けば、その手間を省けるという算段になります。この辺りは、好みと趣味の問題。どっちでも良いと思います。そういうお断りをした上で DBLookup()を紹介しておきます。なお、ADOは、つぎのように参照設定しないと利用できません。

http://www.happy2-island.com/access/gogo03/capter00307.shtml

Public Function DBLookup(ByVal strQuerySQL As String, _
             Optional ByVal ReturnValue = Null) As Variant
On Error GoTo Err_DBLookup
  Dim DataValue
  Dim rst     As ADODB.Recordset

  Set rst = New ADODB.Recordset
  With rst
    .Open strQuerySQL, _
       CurrentProject.Connection, _
       adOpenStatic, _
       adLockReadOnly
    If Not .BOF Then
      .MoveFirst
      DataValue = .Fields(0)
    End If
  End With
Exit_DBLookup:
On Error Resume Next
  rst.Close
  Set rst = Nothing
  DBLookup = IIf(Len(DataValue & ""), DataValue, ReturnValue)
  Exit Function
Err_DBLookup:
  MsgBox "SELECT 文の実行時にエラーが発生しました。(DBLookup)" & Chr$(13) & Chr$(13) & _
      "・Err.Description=" & Err.Description & Chr$(13) & _
      "・SQL Text=" & strQuerySQL, _
      vbExclamation, " 関数エラーメッセージ"
  Resume Exit_DBLookup
End Function

単純にテーブル[会社]のみでフォームを作成し、社員表示用テキストボックスを追加。そして、そのプロパティを表示し

コントロールソース=DBLookup("SELECT 社員名 FROM 社員 WHERE 会社ID=" & [会社ID] & " ORDER BY ソート番号")

これは、以下の標準モジュールに登録したユーザ関数 DBLookup()を使っています。これで、クエリを用意しなくても目的を達成できます。

さて、かかるユーザ関数を標準ライブラリに登録したくない場合、

1、"社員ソートクエリ"を作成します。

SELECT 社員.会社ID, 社員.社員名
FR...続きを読む

QACCESSで空白のデーターをクエリで判定/識別する方法を教えてくださ

ACCESSで空白のデーターをクエリで判定/識別する方法を教えてください。
EXCELでは空白を""で判定/識別表していますがACCESSではどうなるのでしょうか。

下の例はフィールドに試験番号があればその番号を、空白なら”欠席”と表示しようとしています。
IIf(([試験番号]="空白の場合何を入れる?"),[試験番号],"欠席")

Aベストアンサー

もうひとつの書き方は
式1: IIf([試験番号] Is Not Null,[試験番号],"欠席")
第2、第3引数の、質問の順序にあわせるとこうなる。

Qアクセエスのレコードの更新をVBAでするには?

アクセスで、一覧表のフォームにボタンを取りつけています。レコードの内容を変更したら、ペンの形のマークが現れますね。これは変更中ということですが、そこでボタンを押しても変更は確定されないから、更新確定させたいのです。

それで、DoCmd.Requery を最初の行に入れてみたら、元の一覧表は最初のレコードに飛んでしまう。

元の一覧表の位置を動かさないために、Ctrl+Enter キーを押して更新確定させたような状態をVBAで実現する方法あるのでしょうか?

よろしくお願いします。

Aベストアンサー

No1 です。
今回の場合には
Docmd.RunCommand acCmdSaveRecord の方が良かったですね
文字通りレコードを保存します。
Requery に引きづられてしまいました (^_^;)

Recalc、Refresh、Requery の使い分けは下記が参考にはなりますか?
http://www.nurs.or.jp/~ppoy/access/access/acF007.html

QPrintFormを使用してのプリント

下記のようにフォームのCAPTIONにデータを代入していき、FormPrint にてフォームをプリントしています。

Frm_A.Lbl_bookno(H_cnt).Caption = data
  :
  :
Frm_A.PrintForm

ただ、使用するPCによって、またはプリンターによって、フォームの下半分が印刷されなかったり、右にづれたりして、一定の出力結果が得られません。
何か一定の結果が得られるようにする方法はないでしょうか?

Aベストアンサー

>PrintForm
これって、環境に左右されますよね。
ユーザの環境を指定できる業務用でなければ、あまりに流動的なメソッドなので、個人的にはデバッグ用のメソッドと思っております。


代用になるかどうかわからないけど、画面をキャプチャして、Printerオブジェクトに送る手段もあります。
欠点:画面の上に別のウィンドウが存在していたら、それまでキャプっちゃう。。。
利点:プリンタオブジェクトを操作するので、画像をプリンタに送るときに、転送サイズを指定することで、縮小拡大が思いのまま!


その欠点を理解した上で
http://www.geocities.co.jp/SiliconValley-Cupertino/8157/
の8番目をどうぞ

QACCESS フォームで抽出したデータのみをレポートで表示したい

初歩的な質問だとは思いますが、どうしてもできないので教えてください。

フォームで抽出条件をメインフォーム抽出結果をサブフォームに表示するフォームを作成しました。
このサブフォームで抽出したものだけをボタンをクリックするとレポート表示するように作りたいのですができません。

どうすればいいでしょうか?

Aベストアンサー

>レポートのプレビューで出力ボタンを作成したのですが、全てのデータが表示されます。
レポートのプレビューで出力ボタンを作成??意味が不明ですが。
>抽出条件を入力しても同じです。
レポートのレコードソースは抽出条件が入っているのでしょうか?抽出条件がなければ全レコード出力されてしまいます。
抽出条件はどのように入れてあるのでしょうか。
レポートのプロパティでレコードソースの右のボタンをクリックするとSQLステートメントが開きますので抽出条件のフィールドの抽出条件に
=[Forms]![メインフォーム名]![抽出条件のコントロール名]
と記述してください。(メインフォーム名・抽出条件のコントロール名は実際の名前に変えてください)
メインフォームにレポートを出力するボタンを作りそのレポートを設定すれば出来ます。


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

人気Q&Aランキング