這是我第一次構建數據庫,我想分享一個我遇到的問題的解決方案。訪問報告中圖片的相對路徑
我的問題是我想爲報表中的每條記錄顯示不同的圖像,但我也希望能夠移動數據庫。這是一個問題。我在所有論壇中搜索,所有不同的解決方案都不起作用。我還發現了一篇由微軟撰寫的文章,他說唯一的方法是存儲圖像的完整路徑或將圖像存儲在數據庫中。但是,如果數據庫被移動,則會導致問題,或者將數據存儲在數據庫中將佔用大量存儲空間。
問題是代碼不適用於報告中的每個記錄,代碼是針對整個報告的。因此,編寫代碼以查找後端和圖像文件夾將導致在報告中顯示該報告中所有記錄的第一個圖像。
但是,我發現,當只將圖像的名稱存儲在表中時,它有時會工作(但它不應該有,因爲我沒有路徑),但是當我重新啓動數據庫時,它會停止加工。進一步調查我發現,無論何時打開文件瀏覽器,它都會將路徑存儲在某種內存中。只要圖像的路徑存儲在內存中,它就能夠將圖像鏈接到路徑。
所以我的解決辦法...
當表單,從那裏你訪問報告被打開,文件瀏覽器中打開,並在圖像路徑粘貼(使用代碼找到後臺,以及圖像文件夾)然後關閉瀏覽器。這創建了一個鏈接到圖像名稱(存儲在表中)與路徑。每個不同的圖像將顯示在報告中的每個不同的記錄。
不是一個漂亮的解決方案。無論何時打開表格,您都會看到文件瀏覽器的閃光。但它完成了工作。
在負載形式事件:
'」這個會發現後端和圖像文件夾:
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
`
這將適用於表單,或者如果您在報表中有一條記錄。但是,如果您想在報告中爲多個記錄使用不同的圖像,則無法使用(無論如何)。它將爲報告中的所有記錄顯示報告中第一條記錄的圖像。 –
是的,你需要一些更多的連續形式,但你肯定會明白。創建一個輔助函數,它總是返回包含當前文件夾的路徑,如'UrlContent'函數[here](https://www.experts-exchange.com/articles/29679/Show-pictures-directly-from-URLs-在存取表單和reports.html)。另一種選擇是將圖片存儲在網絡服務器上的共享文件夾中。 – Gustav