2009-04-22 28 views
7

アクセスでは、2007バージョンの新しいデータ型 - 添付ファイルの種類が追加されました。現在、Access 2007データベースを使用する.NET 3.5(C#)を使用してWinFormsアプリケーションを開発中です。 WinFormsインターフェイスから新しい添付ファイルを追加できるようにしたいと考えています。 .NETで添付ファイルのデータを挿入または選択する方法に関する情報を見つけることができません。 DAO(バージョン12)を使用しようとしましたが、ここで説明したSaveToFileまたはLoadFromFileメソッドがないようです。http://msdn.microsoft.com/en-us/library/bb258184.aspx.NETでMicrosoft Access添付ファイル型フィールドをプログラムで管理

.NETで添付ファイルを取得するにはどうすればよいですか?

答えて

1

興味深い質問です。私はA2007を使用しませんが、ランタイムがインストールされているので、アクセスオブジェクトブラウザを使用してそこにあるものを確認しました。私は本当に奇妙なことを発見しました。フィールドとフィールド2の2つのFIELDオブジェクトがあります。添付関数はField2のメンバーですが、Fieldではありません。このような何かに

Recordset.Fields("FileData").LoadFromFile(<filename>) 

::だから、私の提案は、おそらくあなたが何をする必要があるか、これを変換していることだろう

Dim rs As DAO.Recordset 
Dim fld2 As DAO.Field2 

Set rs = CurrentDb.OpenRecordset("[SQL]") 
Set fld2 = Recordset.Fields("FileData") 
fld2.LoadFromFile(<filename>) 

rs.Close 
Set fld2=Nothing 

それがために、問題を修正する場合、私は知りませんあなたは、私は、異なるプロパティ/メソッド/メンバーを持つ2つのFieldオブジェクトを与えられていると思われるので、使用しているFieldオブジェクトを明示する必要があります。あなたが引用したコード例は、特にAccessでの使用のためのもので、おそらくAccessは2つのオブジェクト間の違いを自動的に解決する何かをします(ACCDB以外のデータベースにはFieldオブジェクトを、ACCDBファイルにはField2オブジェクトを使用します)。

0

これは、Access team blogに書いてあります。それは基本的にデビッドがちょっとしたひねりで示唆しているものです。これは、Recordset2型オブジェクトを添付ファイルフィールドの値と同じに設定します。次に、そのレコードセットにレコードを追加し、その新しいレコードにファイルの内容を置きます。

0

私はこの同じことをやろうと苦労しました。 「Microsoft.Office.Interop.Access.Dao」にプロジェクトに含めることができる参照があります。これはRecordset2とField2のインターフェイスを取得しますが、実装クラスは取得しません。私はそれを把握する場合について限り私が得ているとして、私は複数回/投稿しますだ

...

私はC#でこの作業を取得することができませんでしたので、私は上へ移動異なる解決策。私は誰かがそれを把握すれば、これを行う方法を知りたいです。

+0

このように各インスタンスを修飾してみてください。--- DAO.DBEngine db = new DAO.DBEngine(); – MasterOfStupidQuestions

5

私はようやくC#でMicrosoft.Office.Interop.Access.Daoへの参照を使用しています。

DBEngine dbe = new DBEngine(); 
Database db = dbe.OpenDatabase("C:\\SomeDatabase.accdb", false, false, ""); 
Recordset rs = db.OpenRecordset("SELECT * FROM TableWithAttachmentField", RecordsetTypeEnum.dbOpenDynaset, 0, LockTypeEnum.dbOptimistic); 
rs.MoveFirst(); 
rs.Edit(); 
Recordset2 rs2 = (Recordset2)rs.Fields["AttachmentFieldName"].Value; 
rs2.AddNew(); 

Field2 f2 = (Field2)rs2.Fields["FileData"]; 

f2.LoadFromFile("C:\\test.docx"); 
rs2._30_Update(); 
rs2.Close(); 

rs._30_Update(); 
rs.Close(); 

これは、テーブル内の添付ファイルフィールド "AttachmentFieldName" "TableWithAttachmentField" にtest.docxを追加します。注意すべき点は、同じファイルを2回追加しようとするとエラーが発生することです。

関連する問題