Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

Pengecualian untuk mengimpor gambar Blob ke dalam laporan ms Access

Kesalahannya cukup jelas:kontrol gambar di Microsoft Access dapat diikat ke lokasi file, atau dapat diatur ke .dib gambar (bitmap independen perangkat format , salah satu format gambar yang lebih tidak jelas).

Namun, mengatasinya tidak semudah itu.

Anda dapat mengatasi batasan itu dengan beberapa cara:

  1. Gunakan kontrol ActiveX yang mendukung beberapa format gambar (ada beberapa yang dapat ditemukan)
  2. Simpan gambar ke disk di folder sementara, dan atur sumber kontrol gambar ke lokasinya
  3. Gunakan kontrol browser web, dan gunakan HTML <img /> untuk menampilkan gambar Anda, menggunakan gambar BASE64 yang disematkan

Berikut adalah contoh kode untuk pendekatan 3:

Pertama, kita harus bisa mengonversi kode biner yang ada di objek OLE ke BASE64:

Public Function ToBase64(Bytes As Variant) As String
    Dim XMLElement As Object
    Set XMLElement = CreateObject("Msxml2.DOMDocument.6.0").createElement("tmp")
    XMLElement.DataType = "bin.base64"
    XMLElement.nodeTypedValue = Bytes
    ToBase64 = Replace(XMLElement.Text, vbLf, "")
End Function

Kemudian, kita dapat menggunakan kontrol browser web, dan menyisipkan halaman web dengan gambar yang dikodekan BASE64 ke dalamnya:

Public Sub InsertImageInControl()
    Dim wb As Object
    Set wb = MyWebbrowserControl.Object
    With wb
        .Navigate2 "about:blank"
        Do Until .ReadyState = 4 '=READYSTATE_COMPLETE
            'This is a somewhat inefficient way to wait, but loading a blank page should only take a couple of milliseconds
            DoEvents
        Loop
        .Document.Open
        .Document.Write "<!DOCTYPE html><HTML><HEAD><TITLE>A</TITLE></HEAD><BODY scroll=""no"" style=""margin: 0px; padding: 0px;"">"
        .Document.Write "<img alt="""" style=""width:100%; margin: 0px; padding: 0px;"" src=""data:image/jpg;base64,"
        .Document.Write ToBase64(MyOLEObject.Value)
        .Document.Write """ />"
        .Document.Write "</BODY></HTML>"
        .Document.Close
    End With
End Sub

Dimana MyWebbrowserControl adalah nama kontrol browser web Anda, image/jpg adalah jenis gambar Anda, dan MyOLEObject adalah objek OLE Anda.

Kiat:

  • Jangan gunakan kontrol ActiveX WebBrowser, tetapi gunakan kontrol yang disertakan dengan Access. Jika tidak, Anda akan mendapatkan Internet Explorer versi lama dengan batas 3d yang tidak dapat dihapus.
  • Setel sumber kontrol untuk kontrol browser web ke ="about:blank" untuk menginisialisasinya sebagai halaman kosong



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Oracle Query untuk menggulung QTY berdasarkan Tahun - hanya 3 tahun terakhir

  2. Sintaks Oracle yang tersisa bergabung dengan tiga atau lebih tabel

  3. java.sql.SQLException:ORA-00936:ekspresi hilang

  4. Oracle:Menggunakan nilai kolom Pseudo dalam pernyataan Select yang sama

  5. Cara Memformat Tanggal di Oracle