初めてデータベースを構築したときに、遭遇した問題の解決策を共有したいと考えていました。アクセスレポートの画像への相対パス
私の問題は、レポート内の各レコードごとに異なるイメージを表示したいということでしたが、データベースを移動できるようにしたかったのです。これは問題でした。私はすべてのフォーラムで検索し、すべての異なるソリューションは動作しませんでした。私は、唯一の方法は、画像への完全なパスを保存するか、データベースに画像を保存することだというマイクロソフトの記事を発見しました。しかし、これは、データベースが移動された場合、またはデータベースにイメージを格納すると多くのストレージスペースを占める場合に問題を引き起こします。
問題は、コードがレポート内の各レコードに対して機能しないことです。コードはレポート全体用です。したがって、バックエンドとイメージフォルダを見つけるためのコードを書くと、そのレポートのすべてのレコードの最初のイメージがレポートに表示されます。
しかし、画像の名前をテーブルに保存するだけで、時にはそれがうまくいくことがわかりました(しかし、私はパスがないので持ってはいけません)が、データベースを再起動すると停止しますワーキング。さらに調査すると、ファイルブラウザを開くたびに、ある種のメモリにパスが保存されることがわかりました。画像へのパスがメモリに保存されている限り、画像をパスにリンクすることができます。
だから私のソリューションは、レポートにアクセスするところからフォームが、開かれると...
、ファイルブラウザが開かれ、画像へのパスが(バックエンドと画像フォルダを見つけるために、コードを使用して)に貼り付けられますブラウザが閉じられます。そしてこれは、パスを使って(テーブルに格納されている)イメージ名へのリンクを作成します。そして、それぞれの異なるイメージは、レポートの異なるレコードごとにショーになります。
かなり解決策ではありません。フォームが開くたびに、ファイルブラウザのフラッシュが表示されます。しかし、それは仕事を終わらせる。負荷フォームイベントで
:
`」これは、バックエンドと画像フォルダができます:あなたはのサブフォルダに画像を移動することができます
Dim filepath As String
Dim strBackEndPath As String
Dim lenPath As Integer
Dim i As Integer
Dim j As Integer
strBackEndPath = CurrentDb.TableDefs("yourTabeInBackend").Connect
j = InStrRev(strBackEndPath, "=") + 1
strBackEndPath = Mid(strBackEndPath, j)
BackPath = Left(strBackEndPath, InStrRev(strBackEndPath, "\"))
filepath = BackPath & "YourImageFolder\"
'this will open the folder browser and paste in the path and close it:
Dim f As Object
Set f = Application.FileDialog(msoFileDialogFolderPicker)
Dim varFile As Variant
Dim strPath As String
Dim fileName As String
With f
.InitialFileName = (filepath)
.AllowMultiSelect = False
SendKeys "{ESC}", True
f.Show
For Each varFile In .SelectedItems
Next varFile
End With
`
これはフォームでも、レポートに1つのレコードがある場合でも機能します。しかし、レポート内の複数のレコードに対して異なるイメージを作成したい場合、それは機能しません(とにかく)。レポート内のすべてのレコードの最初のレコードのイメージがレポートに表示されます。 –
はい、あなたは連続したフォームのために何かが必要ですが、確かにそのアイデアを得ることができます。 'UrlContent'関数のような現在のフォルダを含むパスを常に返すヘルパ関数を作成します。[here](https://www.experts-exchange.com/articles/29679/Show-pictures-directly-from-URLs- in-Access-forms-and-reports.html)を参照してください。別のオプションは、ネットワークサーバー上の共有フォルダに画像を保存することです。 – Gustav