2016-04-07 13 views
1

すべて、VBA添付ファイル:アイテムがコレクションに見つかりません

ドライブに1レコードのレコードを保存しようとしています。私は解決策を探して1日ほど過ごしましたので、これはいくつかの助けを求める最後の努力です。私は想像力の任意のストレッチで開発者ではないので、してください、簡単に行ってください。

コードは以下のとおりです。

レコードがあるテーブル:トラッカー。

フィールドReqID - ReqID =入力しているレコードを検索し、添付ファイルを見つけて場所に移動します。そのレコードに関連付けられている添付ファイル(複数可)のための主要なレコードの1と別:

Dim db As DAO.Database 
Dim rsChild As DAO.Recordset2 
Dim ReqID As String 

ReqID = Me.Form![Text145] 
Debug.Print ReqID 

Set db = CurrentDb 
Set rsChild = db.OpenRecordset("Select * from tracker Where " & ReqID & " = [tracker].[ID]", dbOpenDynaset) 
Debug.Print rsChild.RecordCount 



    If (rsChild.EOF = False) Or (rsChild.BOF = False) Then 

    While Not rsChild.EOF 
rsChild("FileData").SaveToFile "C:\Users\<folder>\" 
     rsChild.Delete 
    Wend 
    End If 
+0

は、何らかのエラーがあるか、それは単に動作しませんか?デバッグ(F8)して、どの部分がうまくいかないかを確認しようとしましたか? – Spidey

+0

[tracker]テーブルに実際に[FileData]という名前のフィールドが含まれていますか?そうでない場合は、デザインビューでテーブルを開き、 'Attachment'フィールドが実際に呼び出された内容を確認します。 –

+0

私はRuntime 3265を取得します。「コレクションにアイテムが見つかりません」 - 何らかの形で添付ファイルが見つからないと思われます。 – jmcginley

答えて

1

あなたは、実際には2つのレコードセットオブジェクトを使用する必要があります。これは、[tblTest]テーブルと[添付ファイル]の名前です、私の作品のサンプルコードでは、Attachmentフィールドの名前です:

Option Compare Database 
Option Explicit 

Sub SaveAllAttachments() 
    Dim cdb As DAO.Database 
    Set cdb = CurrentDb 
    Dim rstMain As DAO.Recordset 
    Set rstMain = cdb.OpenRecordset("SELECT Attachments FROM tblTest WHERE ID=1", dbOpenDynaset) 
    rstMain.Edit 
    Dim rstChild As DAO.Recordset2 
    Set rstChild = rstMain.Fields("Attachments").Value 
    Do Until rstChild.EOF 
     Dim fileName As String 
     fileName = rstChild.Fields("FileName").Value 
     Debug.Print fileName 
     Dim fld As DAO.Field2 
     Set fld = rstChild.Fields("FileData") 
     fld.SaveToFile "C:\Users\Gord\Desktop\" & fileName 
     rstChild.Delete ' remove the attachment 
     rstChild.MoveNext 
    Loop 
    rstChild.Close 
    rstMain.Update 
    rstMain.Close 
End Sub 
+0

私はこれを打つつもりです。私はあなたにビールを買っています。 – jmcginley

+0

rstMain.editで「更新できませんでした;現在ロックされていません」 – jmcginley

+0

レコードはどこかで開いている必要があります。データベースを閉じて再オープンしてみてください。 –

関連する問題