プロが教える店舗&オフィスのセキュリティ対策術

アクセス2000を使用しています。

フォームにグループ化した3つのボタンを作りました

○30% --> 1
○50% --> 2
●70% --> 3

テーブルには1(、2、3)という数値が記録されます。

レポートでは
3ならにこちゃんマークの画像を、
2ならふつうのマークの画像を、
1ならがっかりマークの画像を、
という具合にレポートで画像を表示する場合
どうやればよいでしょうか?

VBAはやったことありますが、ラジオボタン
のVBAは利用したことがありません。

詳しく教えて頂けると大変助かります。

A 回答 (4件)

> .Picture のところは別のものになることはないでしょうか?



そんなことは、ありません。
ヘルプで、Picture プロパティを調べてみてください。

それでは、新しい mdb で下記の手順でテストしてください。
Access2000をデフォルトでインストールしたときの画像を使ってのサンプルコードです。

・ フォームの新規作成で、デザインビューを指定して「オプショングルーブ」コントロールを
 1個 配置します。 名前を「フレーム0」とします。

・ その中に「オプションボタン」コントロールを 3個 配置します。
  (名前は不問ですが、一応、オブション2、オプション4、オブション6 とします。)
  
・ 「イメージ」コントロールを1個 配置し、最初に表示したい画像ファイルを指定します。
  ここは仮に C:\Program Files\Microsoft Office\Office\Samples\CAJLOGO.GIF を
  指定します。 コントロールの名前を「イメージ8」とします。

・ 「フレーム0」を右クリックして「イベントのビルド」を指定して「コードビルダ」を
  選択します。

・ 表示されたコードウィンドウに下記コードを上書きします。

Private Sub フレーム0_BeforeUpdate(Cancel As Integer)
Const Pic_Path = "C:\Program Files\Microsoft Office\Office\Samples\"
Select Case Me.フレーム0.Value
  Case 1
    Me.イメージ8.Picture = Pic_Path & "CAJLOGO.GIF"
  Case 2
    Me.イメージ8.Picture = Pic_Path & "FORLOGO.GIF"
  Case 3
    Me.イメージ8.Picture = Pic_Path & "NWLOGO.GIF"
End Select
End Sub

・ このフームに名前をつけて保存します。

・ このフォームを実行し、各オプションボタンを押して、画像が変わることを確認します。

・ フォームを開いたときに最初(オプション2)が押された状態に設定するのであれば、
 先と同じコードウィンドウに下記コードを追記します。

Private Sub Form_Open(Cancel As Integer)
  Me.フレーム0.Value = 1
End Sub
    • good
    • 0

ゴメン。

大チョンボをしていたかも?
前回の「怪答」は忘れてください。

> テーブルには1(、2、3)という数値が記録されます。
↑のフィールド名が[充実度]なら。

案1 顔文字でも良い場合
クエリを作成して、デザイングリッドに新たなフィールドを作成します。
例 → 顔文字:Choose([充実度],"×","△","◎")
でこのクエリをフォームやレポートのレコードソースに使用すれば
単票フォーム(レポート)でも帳票フォーム(レポート)でも使用できます。

案2 画像を使用する場合
 単票フォーム(レポート)の場合
画像を埋め込んで
詳細セクションのフォーマット時イベントに下記のように記載します
Private Sub 詳細_Format(Cancel As Integer , FormatCount As integer)
  Me!イメージ1.visible = Me!充実度 = 1
  Me!イメージ2.visible = Me!充実度 = 2
  Me!イメージ3.visible = Me!充実度 = 3
End Sub
で可能なのですが・・・

 帳票フォーム(レポート)の場合は難しいです。
サブフォーム(レポート)を埋め込んで・・・とも考えたのですが
画像サイズはアイコンぐらいの大きさでしょうから・・・
ちょっと良いアイディアが思い浮かびません。
    • good
    • 0

こんな感じで如何でしょうか。



そのフォームにイメージコントロールを1個 配置します。(仮に名前を「イメージ1」とします。)
オプション グループの名前を「フレーム1」とした場合、そのフォームのモジュールに
下記のコードを貼り付けます。

画像ファイル名は、実情に合わせてください。


Private Sub フレーム1_AfterUpdate()
Select Case Me.フレーム1.Value
  Case 1
    Me.イメージ1.Picture = "C:\Data\がっかりマーク.jpg"
  Case 2
    Me.イメージ1.Picture = "C:\Data\ふつうマーク.jpg"
  Case 3
    Me.イメージ1.Picture = "C:\Data\にこちゃんマーク.jpg"
End Select
End Sub


レポートの方は、これを応用してください。
    • good
    • 0
この回答へのお礼

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

残念ながら上手くいきません。
画像が表示されないんです。

Me.イメージ1.Picture = "C:\Data\がっかりマーク.jpg"

.Picture のところは別のものになることはないでしょうか?

お礼日時:2007/01/12 19:49

顔文字とかじゃ駄目ですかね・・・


適当なテキストボックスを作成して、コントロールソースに
=Choose(フィールド名,"(-_-;)","^/^","(^_^)v")
では?

でなければ画像を三個重ねて配置して
レポートの詳細セクションのフォーマット時イベントに
Me!画像1.Visible = Me!フィールド名 = 1
Me!画像2.Visible = Me!フィールド名 = 2
Me!画像3.Visible = Me!フィールド名 = 3
でも。
    • good
    • 0
この回答へのお礼

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

せっかく回答頂きましたが、なぜか表示されません。
どうしてなのか思案中です。

Private Sub Report_Page()
Dim cn As ADODB.Connection
Dim rs As New ADODB.Recordset

Set cn = CurrentProject.Connection
rs.Open "基本情報", cn, adOpenStatic, adLockReadOnly

Select Case rs!充実度
Case 1
Me.イメージ132.Visible = True
Case 2
Me.イメージ134.Visible = True
Case 3
Me.イメージ135.Visible = True
End Select
rs.Close
Set cn = Nothing
End Sub

お礼日時:2007/01/12 20:03

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