OKWAVEのAI「あい」が美容・健康の悩みに最適な回答をご提案!
-PR-
解決
済み

アクセスのマクロ機能を使った印刷について、質問です

  • 困ってます
  • 質問No.227588
  • 閲覧数479
  • ありがとう数2
  • 気になる数0
  • 回答数2
  • コメント数0

お礼率 58% (81/139)

今、アクセス2000を使ったちょっとしたデータベースシステムを構築してます。
その中で、マクロを使ってレポートのカレントレコードだけを印刷させたいのですが、データベース全体のレコード全件が印刷されてしまいます。
どなたか、カレントレコードだけをマクロ印刷させる方法をご存知の方ご教授下さい。よろしくお願いします。
通報する
  • 回答数2
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

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

  • 回答No.2
レベル7

ベストアンサー率 46% (7/15)

ん~VBAってそんなに難しいかな?
とりあえずマクロのやり方書くけど・・・前のカット&ペーストしてみてね!

マクロを選択してツールのマクロの「マクロをVisual Basicに変換」して
必要な部分だけ切り取っただけだし・・・。前回記述したことを忠実に実行
するだけで、カッコいい感じで使えますよ。

説教ではありません。不愉快だったらごめんなさい!

>[Aテーブル]![id]=[Forms]![Aフォーム]![id]
で出来ます。
解説すると連番が必要だって前に説明しましたよね。
1~200件位だっけ?※無い場合はムリ!がんばって付けてね。
厳密には方法が無いわけじゃないけど、説明が長くなるからムリ!

その番号を仮にIDとします。
元になる(200件入っている)テーブルをAテーブルとします。
そのテーブルを元に作ったフォームをAフォームとします。

難しく考えないで「Aフォームに表示されている数字(ID)=Aテーブルにある
レコードを印刷してください!」となる。

もっと簡単にいうと画面に見える物と同じレコードを印刷しなさい!となる。
私も始めて「マクロ」って作りましたが、動きました。

※ちょっと質問
1.フォームって使ってるよね?
2.コンボボタンとかも使ってるよね?
出来なかったら・・・追記してね。
お礼コメント
hirokun925

お礼率 58% (81/139)

 回答ありがとうございます。できました!!
構文は[Aテーブル]![id]=[Forms]![Aフォーム]![id] だったんですね。
私は[Aレポート]![id]=[Forms]![Aフォーム]![id] とやってしまって上手くいかなかったんです。
(マクロを実行すると)全件がいきなり印刷されたり、パラメーターの入力を求められたりと、もーワケわからん状態だったので、スッキリしました。
心の余裕ができたので、VBAの方もやってみます。
投稿日時 - 2002-03-05 23:58:14
-PR-
-PR-

その他の回答 (全1件)

  • 回答No.1
レベル7

ベストアンサー率 46% (7/15)

マクロはあまり使わないので間違っていたら御免なさい! 「印刷」を行うときには、「レポートを開く」を選択しますよね? その際にWhere条件ってのが存在すると思うんですけど、そこにSQL文を 書くことになると思います。 ※印刷の際カレントレコードのみ出力するにはIDのような「キー」が必要に なります。まあ重複しない数字ですよね。 ↑があると仮定します。単純に「=ID」のような記述ではないので ...続きを読む
マクロはあまり使わないので間違っていたら御免なさい!
「印刷」を行うときには、「レポートを開く」を選択しますよね?
その際にWhere条件ってのが存在すると思うんですけど、そこにSQL文を
書くことになると思います。

※印刷の際カレントレコードのみ出力するにはIDのような「キー」が必要に
なります。まあ重複しない数字ですよね。
↑があると仮定します。単純に「=ID」のような記述ではないのでしょうか?
詳細がわからないとこれ以上はムリですね!

AccessVBAで書くとしたら↓
適当なフォームにボタン(コマンドボタン)を付ける所までは一緒です。
プロパティ→イベント→クリック時にマクロの設定してますよね?
そこを
プロパティ→イベント→クリック時に右側の「...」三点リーダーみたいな
のをクリックして「コードビルダ」を選択して下さい。
Private Sub コマンド0()
End sub
↑って画面が出てくると思うんですけど、そこに↓をカット&ペーストして
下さい。※ちゃんとPri~の後にスペースを空けてEnd~の間に入れてね!

'----------------------更新・印刷作業-----------------------

Dim lngID As Long   '変数宣言ってやつです。
Dim kosyin As Integer  
'Dimはお約束→Kosyin適当な名前→asもお約束→Integer(数字)型が入ります。

'保存
kosyin = MsgBox("更新しますか?", vbYesNo)
If kosyin = vbNo Then
'Noだったら
Exit Sub
'閉じる
End If
DoCmd.RunCommand acCmdSaveRecord  'レコードの保存

'印刷
lngID = MsgBox("印刷を行いますか?", vbYesNo)

If lngID = vbNo Then
Exit Sub
End If
'上は同じ事してる。

'ここからが印刷ね!
lngID = Me.txt1.Value

'さっき変数宣言した適当な名前の中にIDを入れます。
'IDはさっき開いていたフォームのテキストボックスに表示されていることが条件
'IDのテキストボックスの名前を[txt1]の所に入れてみて!

DoCmd.OpenReport "印刷", acViewPreview, , "lngID=" & lngID
'acViewPreview を選択するとプレビュー acViewNormalは印刷
'ここは印刷を行う所です。「印刷」の所に自分のレポート名を入れてみてね。
'以上で更新作業から印刷までの流れです。
'マクロ使うより軽く出来るし、何よりカッコいいでしょ?(笑)

'質問があれば、追記してください。(暇な時に返事します。)
お礼コメント
hirokun925

お礼率 58% (81/139)

 大変親切なご回答ありがとうございます。VBAの方は私のスキルではついて行けませんので、マクロの式をご教授頂けると助かるのですが……
 前提条件はご推察の通りです。マクロの「レポートを開く」をフォーム上のボタンに貼り付けてます。そこでWhere条件にどういう構文を入力すれば良いのかでつまづいてます。今、仮に200件あるデータのうち5番目のデータがフォームとして画面上に表示されていたとします。この5番目のデータだけをレポートとして印刷させたいのですが、上手くいかないのです。1番目から全件のデータのレポートが出力されてしまいます。
 時間が出来ましたら、教えてくださいませ。
投稿日時 - 2002-03-03 00:07:06

このQ&Aで解決しましたか?
関連するQ&A
-PR-
-PR-
このやり方知ってる!同じこと困ったことある。経験を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


いま みんなが気になるQ&A

関連するQ&A

-PR-

ピックアップ

-PR-
ページ先頭へ