一般的なデータベースの観点からは、画像が非常に小さく (約 1 MB 未満)、実際に画像を保存するスペースがある場合を除き、画像をデータベースに直接保存しないでください。最も一般的な方法は、イメージパスをデータベースに保存し、必要に応じてイメージが保存されているファイル ディレクトリからそれらのイメージを直接ロードすることです。別のレベルの複雑さが追加されますが、DB のサイズが大幅に削減されます。
アップデート:
このコードにより、ユーザーはフォーム内のいくつかの要素フレームをクリックし、パスを DB に保存し (パスは username.jpg として)、その後クリックしたフレームでユーザーに画像を表示できます。
Private Sub SignatureFrame_Click()
On Error GoTo ErrorHandler
' Get path for the new picture from a dialog box
Dim Path As String
Dim fd As FileDialog
Dim ffs As FileDialogFilters
Set fd = Application.FileDialog(msoFileDialogOpen)
With fd
Set ffs = .Filters
With ffs
.Clear
.Add "Pictures", "*.jpg"
End With
.AllowMultiSelect = False
If .Show = False Then Exit Sub
Path = .SelectedItems(1)
End With
' Update the picture in the user interface
Me![SignatureFrame_Click].Picture = Path
' Copy the signature into the local Signature folder of the DB
Dim fs As Object
Dim oldPath As String, newPath As String, file As String
oldPath = Path 'Full path the file is located in
newPath = CurrentProject.Path & "\Signatures\Users\" & Screen.ActiveForm.UserName & ".jpg" 'Folder and path to copy file to
Set fs = CreateObject("Scripting.FileSystemObject")
fs.CopyFile oldPath, newPath 'This file was an .jpg file
Set fs = Nothing
' Set the new picture path for the form
Screen.ActiveForm.SignaturePath = newPath
Exit Sub
ErrorHandler:
MsgBox "Could not upload the image. Please check that the file format is of type jpg."
Resume Next
End Sub
その後、他のフォームで次のように画像を取得できます。
Me!SignatureFrame.Picture = CurrentProject.Path & "\Signatures\username.jpg"
PS: コードは SO エディターで翻訳されているため、間違いがないことは保証できません。
それが役立つことを願っています!