• ベストアンサー

ACCESS2000のレポートで別々の画像を表示したい

MS ACCESS2000(OFFICE2000PRO),WIN2000の環境です。 アクセスで作っている名簿から、レポートでIDカードを作成しようとしています。 顔写真を入れたいのですが、数百人いるため、OLEオブジェクト型のフィールドに写真データをリンクで挿入していくのが手間です。 個人の番号と写真名は同じ(番号100→100.JPG)にしています。一括で登録する方法はないでしょうか。 ちなみに、個人の番号をフィールドIDに入れ、写真をc:\phフォルダに入れておき、クエリで、PhID:"c:\ph\"&ID&".jpg"としてパスを作り、 レポートにイメージ IMGをつくり、フォーマットイベントで、 ME.IMG.PICTURE = ME.PHID としてみましたが、表示されませんでした。

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

  • ベストアンサー
  • zealzany
  • ベストアンサー率35% (19/53)
回答No.3

1.DB内部(OLEオブジェクト)に画像を連続登録する。 テーブル ファイル名(テキスト形式) 画像(OLEオブジェクト) フォームを作成 ファイル名用テキストボックス : コントロールソース(ファイル名) 画像用連結オブジェクトフレーム : コントロールソース(画像) :OLEサイズ ズーム 実行用ボタン Private Sub 実行用ボタン_Click() '****************************************** ' 連続画像取込み '****************************************** Dim Targetdir As String, Extension As String Dim phctl As Control Dim msg As String, style, StrMsg As String, IntResponse As Integer Dim myFName As String Targetdir = "C:\ph\" Extension = ".jpg" myFName = Dir(Targetdir & "*" & Extension) Set phctl = [画像] Do While myFName <> "" Debug.Print myFName DoCmd.GoToRecord , , acNewRec [ファイル名] = Replace(myFName, Extension, "") phctl.OLETypeAllowed = acOLEEmbedded phctl.SizeMode = 3 phctl.SourceDoc = Targetdir & [ファイル名] & Extension phctl.Class = "Paint.Picture" phctl.Action = acOLECreateEmbed myFName = Dir() Loop Exit_画像セット: Exit Sub Err_画像セット: MsgBox "エラー!@画像ファイルがないか、" & _ "その他のエラーが発生しました@入力文字、ファイル名を確認してください。", vbOKOnly End Sub 以上、1の方法ですが個人的には画像を外部に置く方法をお勧めします。#1の既出URLをもう少し分析なさった方がよいかなぁと思われます。ちなみにその方法だとファイル名の取得のみで良いので、上のVBAで Do While myFName <> "" DoCmd.GoToRecord , , acNewRec    [ファイル名] = myFName myFName = Dir() Loop となります。

s-eight
質問者

お礼

おぉ、できました!!!!! ありがとうございました。とても助かりました。

すると、全ての回答が全文表示されます。

その他の回答 (5)

  • zealzany
  • ベストアンサー率35% (19/53)
回答No.6

ACCESS2000でDAOの設定が必要みたいですが、説明のページがありました。

参考URL:
http://www.accessclub.jp/samplefile/samplefile_63.htm
s-eight
質問者

お礼

ありがとうございます。 このページ、サンプルつきでわかりやすいですね。 今後の参考にさせていただきます。

すると、全ての回答が全文表示されます。
回答No.5

レポートのフォーマットイベントで、 ME.IMG.PICTURE = XXX とする方法ですが、私も試してみましたがダメでした。デザイン時に貼り付けた画像のままで、ページごとに変わりませんでした。ちなみに Access のバージョンは 2000 です。もしかすると、バージョンによって動作が異なるのかもしれないですね。

s-eight
質問者

お礼

おためしいただいたんですね、ありがとうございます。

すると、全ての回答が全文表示されます。
  • zealzany
  • ベストアンサー率35% (19/53)
回答No.4

短時間で作ったので、見直したら間違ってました。(動作はしますが)それ以外にもループの外においても良い処理があるのですが、いろいろ試してください。 ' 連続画像取込み '****************************************** On Error goto Err_画像セット ←追加 Exit_画像セット: ← 不要

すると、全ての回答が全文表示されます。
回答No.2

OLE オブジェクト型のフィールドに写真のリンクを挿入していくのなら、 (1) フォームに連結オブジェクトフレームを置き、コントロールソースを OLE オブジェクト型のフィールドにします。 (2) Form_Current イベントプロシージャに With IMG   .SourceDoc = Me.PHID   .Action = acOLECreateLink End With とします。 完全自動とはいきませんが、少しは手間が省けるのではないでしょうか。

s-eight
質問者

お礼

早速に、ありがとうございます。 かなり手間が省けますね。

すると、全ての回答が全文表示されます。
  • zealzany
  • ベストアンサー率35% (19/53)
回答No.1

1. >OLEオブジェクト型のフィールド >一括で登録する方法 これはテキスト形式の「フィールドID」にファイル名をそして、OLEオブジェクトの項目に画像を連続登録する方法を聞きたいと理解しましたがそれで良いのでしょうか? 2. 既出の方法で良いのでしょうか?(参考URL) 1と2で画像の存在場所が異なると思うのですが、画像ファイルをDBの外部・内部どちらに置きたいのでしょうか? 画像ファイルを外部に置く場合にはファイル名取得のみのVBAで良くなりますし、画像データ分DBのファイルサイズ小さく動きも軽くなります。 私の理解が間違っていたらご容赦ください。

参考URL:
http://www.okweb.ne.jp/kotaeru.php3?q=505348
s-eight
質問者

お礼

早速のご回答ありがとうございます。 2の方法も試してみたのですが、全部同じ画像になってしまいました。 私のやり方が間違っているとは思うのですが、何が間違っているのかわかりません。 というわけで、1の方法しかないのかな、と思ったしだいです。

すると、全ての回答が全文表示されます。

関連するQ&A