2

Access 2010 odbc フロント エンドと SQL Server 2012 バックエンドがあります。私の画像 ( .bmp) は として保存されVarbinary(Max)ます。バインドされたオブジェクト フレームを使用して Access フォームに画像を挿入すると、画像がフォームとレポートに完全に表示されます。SQL に取り込む画像が多数あったため、SQL Server Management Studio で次のコードを使用しました。

UPDATE dbo.Photos_Observations 
SET [Photo] = (SELECT BulkColumn 
FROM Openrowset( Bulk '\\serverIP\servername\020.BMP', Single_Blob) as MyImage) 
WHERE PhotoTableID =391

これはうまく機能し、600 以上の写真はすべて SQL Server に保存されました。しかし、この方法で追加したものが Access フォームまたはレポートに表示されません。Bound Object Frame をクリックすると、エラー番号 502753「Microsoft Access が OLE サーバーまたは ActiveX コントロールと通信中に問題が発生しました。」が表示されます。

なぜそれは一方の方法で機能し、他方の方法では機能しないのですか? 画像を表示するにはどうすればよいですか?

4

1 に答える 1

2

T-SQL を使用して、生のバイナリ イメージ データを BMP ファイルから VARBINARY 列に直接一括挿入したようです。したがって、これらのイメージには、Access フォームの連結オブジェクト フレームを介してイメージが挿入されるときに追加される "OLE ラッパー" がありません。

「OLE ラップ」画像の挿入を自動化する方法については、関連する質問に対する私の回答を参照してください。(少し面倒ですが、すべて手作業で行うよりはましです。)

もう 1 つの方法は、バインド オブジェクト フレームの代わりにイメージ コントロールを使用し、イメージを "OLE ラップ" オブジェクトではなく生のバイナリ データとして格納することです。これは、データベース自体に保存されている画像を処理するための好ましい方法になりつつあります。(OLE オブジェクトは、特に Access 以外のアプリケーションで作業する場合に厄介な場合があります。)

于 2015-06-15T20:48:37.337 に答える