I'm lost with this topic. I gonna try to explain what I'm trying to do: - the idea I have, is to be able to upload or save jpg files to my access 2010 database, this proccess is launched by usign macro in excel. I've read a lot in Internet but honestly I'm stuck, I'm not able to find an example. I want to use ADO connection My idea is to use post labels and this labels will be different, I mean, I want to print these labels with these pictures.
Below you can see What I'm trying to do. I'm lost, I get errors, perhaps if someone has an example I could adapt it because, I think, I am not able to use the one I have.
the procedure is as follow:
Sub SUBIRIMAGEN() 'To save a file in a table as binary
Dim adoStream As Object
Dim adoCmd As Object
Dim strFilePath As String
Dim adoCon As Object
Const strServerName As String = "" 'Server Name
Set adoCon = CreateObject("ADODB.Connection")
Set adoStream = CreateObject("ADODB.Stream")
Set adoCmd = CreateObject("ADODB.Command")
strDBName = "database1.accdb"
strMyPath = ThisWorkbook.Path
strDB = strMyPath & "\" & strDBName
'Connect to a data source:
'For pre - MS Access 2007, .mdb files (viz. MS Access 97 up to MS Access 2003), use the Jet provider: "Microsoft.Jet.OLEDB.4.0". For Access 2007 (.accdb database) use the ACE Provider: "Microsoft.ACE.OLEDB.12.0". The ACE Provider can be used for both the Access .mdb & .accdb files.
'--Open Connection to SQL server
adoCon.CursorLocation = adUseClient
adoCon.Open ConnectionString:="Provider = Microsoft.ACE.OLEDB.12.0; data source=" & strDB
Rem adoCon.Open "Provider=SQLOLEDB;Data Source=" & strServerName & ";Initial Catalog = " & strDB & ";Integrated Security=SSPI;"
'----
strFilePath = "C:\Users\pc2\Downloads\frutossecosgranel.JPG" ' File to upload
adoStream.Type = adTypeBinary
adoStream.Open
adoStream.LoadFromFile strFilePath 'It fails if file is open
With adoCmd
.CommandText = "INSERT INTO table1 (id,attach) VALUES (?,?) " ' Query
.CommandType = adCmdText
'---adding parameters
.Parameters.Append .CreateParameter("@Id", adInteger, adParamInput, 0, 1)
.Parameters.Append .CreateParameter("@attach", adVarBinary, adParamInput, adoStream.Size, adoStream.Read)
'---
End With
adoCmd.ActiveConnection = adoCon
adoCmd.Execute
adoCon.Close
End Sub
Use the following code to attach image to database access from excel.
Write this code in excel
Modify the constants as you need
Private Sub AttachImage()
Const dbname = "c:\temp\Db.accdb"
Dim sql As String
Dim db As Database
Dim rst As Recordset2
Dim rstImage As Recordset2
Dim imageField As Field2
Dim path As String
Dim lnga As Integer
Dim lngkey As Long
path = "c:\temp\table.png"
'select the row to be attached by image
sql = "SELECT * FROM table2 WHERE ID = 1"
Set db = DBEngine.Workspaces(0).OpenDatabase(dbname)
Set rst = db.OpenRecordset(sql)
Set imageField = rst!Blob ' Blob is the field name to store attachment
Set rstImage = imageField.Value
rst.Edit
rstImage.AddNew
On Error Resume Next
rstImage!FileData.LoadFromFile path
If Err <> 0 Then
MsgBox "Error: " + Err.Description, vbInformation, path
Exit Sub
End If
rstImage.Update
rst.Update
Set rst = Nothing
Set db = Nothing
End Sub
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.