Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

Ngoại lệ khi nhập hình ảnh Blob vào báo cáo Truy cập ms

Lỗi này hơi tự giải thích:điều khiển hình ảnh trong Microsoft Access có thể được liên kết với một vị trí tệp hoặc có thể được đặt thành .dib image ( bitmap độc lập với thiết bị định dạng , một trong những định dạng hình ảnh khó hiểu hơn).

Tuy nhiên, làm việc xung quanh nó không phải là dễ dàng.

Bạn có thể khắc phục hạn chế đó theo một số cách:

  1. Sử dụng điều khiển ActiveX hỗ trợ nhiều định dạng hình ảnh (có nhiều định dạng được tìm thấy)
  2. Lưu hình ảnh vào đĩa trong một thư mục tạm thời và đặt nguồn điều khiển hình ảnh vào vị trí của nó
  3. Sử dụng điều khiển trình duyệt web và sử dụng HTML <img /> để hiển thị hình ảnh của bạn, sử dụng hình ảnh BASE64 được nhúng

Đây là mã ví dụ cho cách tiếp cận 3:

Đầu tiên, chúng ta cần có thể chuyển đổi mã nhị phân có trong đối tượng OLE thành 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

Sau đó, chúng tôi có thể sử dụng điều khiển trình duyệt web và chèn một trang web có hình ảnh được mã hóa BASE64 vào đó:

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

Ở đâu MyWebbrowserControl là tên của điều khiển trình duyệt web của bạn, image/jpg là loại hình ảnh của bạn và MyOLEObject là đối tượng OLE của bạn.

Lời khuyên:

  • Không sử dụng điều khiển WebBrowser ActiveX mà hãy sử dụng điều khiển đi kèm với Access. Nếu không, bạn sẽ nhận được phiên bản Internet Explorer lỗi thời với đường viền 3d không thể xóa được.
  • Đặt nguồn điều khiển cho điều khiển trình duyệt web thành ="about:blank" để khởi tạo nó dưới dạng một trang trống



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. ORA-22288:tệp hoặc thao tác LOB FILEOPEN không thành công. Tên tệp, tên thư mục không chính xác

  2. Thực hành tốt để mở / đóng các kết nối trong ứng dụng asp.net?

  3. Làm thế nào để liệt kê tất cả các cặp vị trí có cùng khu vực từ bảng trong Oracle?

  4. Bộ nhớ đệm trình tự Oracle

  5. Thủ tục lưu trữ cuộc gọi động (thực hiện ngay lập tức) Các tham số ra Sự cố