2016-07-30 87 views
-1

我迷失了这个话题。我会试着解释我想要做的事情: - 我的想法是能够上传或保存jpg文件到我的access 2010数据库,这个过程是通过在excel中使用宏来启动的。我在互联网上阅读了很多,但老实说我被卡住了,我无法找到一个例子。 我想使用ADO连接 我的想法是使用帖子标签,这个标签会有所不同,我的意思是,我想用这些图片打印这些标签。Excel宏保存jpg作为附件

下面你可以看到我想要做什么。我迷路了,我得到了错误,也许如果有人有一个例子我可以适应它,因为我认为我无法使用我拥有的那个。

的过程如下:

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 

回答

0

使用下面的代码映像连接到从Excel数据库访问。

写这样的代码在Excel

修改常量,你需要

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