top of page

Link images to your Ms Access data

you've probably noticed that access's design tools do not offer very aesthetic solutions. Adding media to tables is also very difficult.

However, there is a need to save pictures in many databases such as real estate, project management, material stock, product, personnel, logo,.

In this post, you will find how to get a picture for each record without increasing the database file size and how to display these pictures in forms.

In addition, with the VBA code I provide, you will be able to easily add this feature to your own database and start using it immediately.

Briefly; we will copy the image file to subfolder and add the file path to the field in the table.

We will use a function that combines the location of the database with the file path in the table. we're going to attach it to the picture frame.

In the first step, let's prepare the subfolders first. I open a folder named system or data under the folder where the database is located. I create another subfolder named images under this folder. The files will be copied here.

Add an image. change name "imgproject"

add two button, "+" and "-"

change name as "add project image" and "deleteprojectimage"

create a module and paste this code into your module

KnowIt Project Management
ZIP dosyasını indir • 5.03MB

Option Compare Database
Public Const imagesubfolder = "system\images\"

'****** P A S T E   T H  I S   C O D E   T O  t h e   N E W   M O D U L E ************

Function preparepath(ID As Integer)
    Dim txt As String
    Dim txtfilename As String
    Dim x As Integer
    Dim y As Integer
    Dim basla As Date

    txt = Application.CurrentProject.Path
    txt = txt + "\system\images\" + LTrim$(Str$(ID))
    txt = txt + txtimagename + ".jpg"
    If Dir(txt) = "" Then
        txt = Application.CurrentProject.Path
        txt = txt + "\system\images\" + LTrim$(Str$(ID))
        txt = txt + txtimagename + ".png"
    End If
Debug.Print txt
    preparepath = txt

End Function

Public Function GetcurrentDbPath()
Dim strDB As Variant
strDB = CurrentDb.Name
 '   txtx = InStr(1, strDB, "\")
    strDB = (Application.CurrentProject.Path)
GetcurrentDbPath = strDB + "\"
End Function

Copy this code into your form'dsmodule
Option Compare Database

'******  T H  I S   C O D E   T O    Y O U R    F O  R M   M O D U L E ************

Private Sub ADDprojectimage_Click()
Dim f As Office.FileDialog
Dim x As Variant
Dim strSQL As String
Dim db As DAO.Database
Dim rst As DAO.Recordset
Dim txtID As Integer
    Set f = Application.FileDialog(3)
    f.AllowMultiSelect = False
' Clear out the current filters

' Add a few custom filters
f.Filters.Add ".jpg", "*.jpg"
f.Filters.Add ".jpeg", "*.jpeg"
f.Filters.Add ".png", "*.png"
f.Filters.Add "All Files", "*.*"

f.InitialFileName = strCurrentDirP
' Show the dialog. If the method returns True, the user picked at least one file.
' If the method returns False, the user clicked Cancel.
If f.Show Then
        Copy_Folder f.SelectedItems(1)
End If
End Sub
Sub deleteprojectimage_click()
On Error Resume Next
    ToPath = GetcurrentDbPath + imagesubfolder + LTrim$(Str$(Me.ID)) + ".jpg"
    If Dir(ToPath) <> "" Then
        Kill (ToPath)
    End If
    ToPath = GetcurrentDbPath + imagesubfolder + LTrim$(Str$(Me.ID)) + ".png"
    If Dir(ToPath) <> "" Then
        Kill (ToPath)
    End If
End Sub

Sub Copy_Folder(Picpath As String)
    Dim FromPath As String
    Dim ToPath As String

    FromPath = Picpath
    L = Len(FromPath)
    For i = L To 1 Step -1
        txtfilename = Mid$(FromPath, i, 1)
        If txtfilename = "\" Then txtfilename = Right$(FromPath, L - i): Exit For
    L = Len(txtfilename)
    For i = L To 1 Step -1
        txtextension = Mid$(txtfilename, i, 1)
        If txtextension = "." Then txtextension = Right$(txtfilename, L - i + 1): Exit For
    ToPath = GetcurrentDbPath + imagesubfolder + LTrim$(Str$(Me.ID)) + txtextension
    ToPath = Replace(ToPath, " ", "_")
    If Dir(ToPath) <> "" Then
        Kill (ToPath)
    End If
 If FromPath <> ToPath Then
 FileCopy FromPath, ToPath
 End If
End Sub

Private Sub Form_Current()
End Sub

Save your form and open again

Select image

Change datasource as "=preparepath([ID])"

Finally, write "me.picname.requery" in the appropriate place of the "on-current" event of the


Hit the + button, select an image

The selected file will be automatically copied to the system/images folder we created and renamed as ID.jpg

That's it.

Let's try now.

I hope it will work for you.

121 görüntüleme0 yorum

Son Yazılar

Hepsini Gör


bottom of page