• ベストアンサー

ラジオボタンの数値で画像を表示する

アクセス2000を使用しています。 フォームにグループ化した3つのボタンを作りました ○30% --> 1 ○50% --> 2 ●70% --> 3 テーブルには1(、2、3)という数値が記録されます。 レポートでは 3ならにこちゃんマークの画像を、 2ならふつうのマークの画像を、 1ならがっかりマークの画像を、 という具合にレポートで画像を表示する場合 どうやればよいでしょうか? VBAはやったことありますが、ラジオボタン のVBAは利用したことがありません。 詳しく教えて頂けると大変助かります。

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

  • ベストアンサー
  • ja7awu
  • ベストアンサー率62% (292/464)
回答No.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

その他の回答 (3)

  • nicotinism
  • ベストアンサー率70% (1019/1452)
回答No.3

ゴメン。大チョンボをしていたかも? 前回の「怪答」は忘れてください。 > テーブルには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 で可能なのですが・・・  帳票フォーム(レポート)の場合は難しいです。 サブフォーム(レポート)を埋め込んで・・・とも考えたのですが 画像サイズはアイコンぐらいの大きさでしょうから・・・ ちょっと良いアイディアが思い浮かびません。

  • ja7awu
  • ベストアンサー率62% (292/464)
回答No.2

こんな感じで如何でしょうか。 そのフォームにイメージコントロールを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 レポートの方は、これを応用してください。

Scotty_99
質問者

お礼

回答ありがとうございました。 残念ながら上手くいきません。 画像が表示されないんです。 Me.イメージ1.Picture = "C:\Data\がっかりマーク.jpg" .Picture のところは別のものになることはないでしょうか?

  • nicotinism
  • ベストアンサー率70% (1019/1452)
回答No.1

顔文字とかじゃ駄目ですかね・・・ 適当なテキストボックスを作成して、コントロールソースに =Choose(フィールド名,"(-_-;)","^/^","(^_^)v") では? でなければ画像を三個重ねて配置して レポートの詳細セクションのフォーマット時イベントに Me!画像1.Visible = Me!フィールド名 = 1 Me!画像2.Visible = Me!フィールド名 = 2 Me!画像3.Visible = Me!フィールド名 = 3 でも。

Scotty_99
質問者

お礼

回答ありがとうございました。 せっかく回答頂きましたが、なぜか表示されません。 どうしてなのか思案中です。 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

関連するQ&A