sql >> データベース >  >> RDS >> Oracle

Blob イメージを ms Access レポートにインポートする際の例外

    このエラーは自明です。Microsoft Access のイメージ コントロールは、ファイルの場所にバインドされているか、.dib に設定されている可能性があります。 画像 (デバイスに依存しないビットマップフォーマット 、あまり知られていない画像形式の 1 つです)。

    ただし、これを回避するのはそれほど簡単ではありません。

    この制限を回避するには、いくつかの方法があります:

    <オール>
  1. 複数の画像形式をサポートする ActiveX コントロールを使用する (複数あります)
  2. 画像をディスクの一時フォルダーに保存し、画像コントロール ソースをその場所に設定します
  3. Web ブラウザ コントロールを使用し、HTML <img /> を使用します 埋め込み BASE64 画像 を使用して画像を表示するためのタグ
  4. アプローチ 3 のコード例は次のとおりです:

    まず、OLE オブジェクトに含まれるバイナリ コードを 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
    

    次に、Web ブラウザー コントロールを使用して、BASE64 でエンコードされた画像を含む Web ページを挿入できます。

    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
    

    どこ MyWebbrowserControl image/jpg は、Web ブラウザ コントロールの名前です。 は画像の種類で、MyOLEObject は はあなたの OLE オブジェクトです。

    ヒント:

    • WebBrowser ActiveX コントロールは使用せず、Access に付属のコントロールを使用してください。そうしないと、削除できない 3D 境界線を持つ古いバージョンの Internet Explorer が表示されます。
    • Web ブラウザ コントロールのコントロール ソースを ="about:blank" に設定します 空白のページとして初期化する



    1. グループ化するときにテーブルから最長の「文字列」を選択するにはどうすればよいですか

    2. liquibaseの自動インクリメント

    3. SQLサーバーで重複する範囲を確認するためのクエリ?

    4. MySQL varchar(2000)とテキスト?