MS Accessには100行程度あり、各行には添付ファイルが含まれています。 RIでRODBCを使用すると、テーブルにアクセスができますが、MS AccessでそれをRを使用してすべてのMSアクセス添付ファイルをダウンロードする方法
答えて
添付ファイルを実行する方法を私を助けてplzは可能性がどのように添付ファイルにアクセスし、R
でそれらをダウンロードするには考えていることができ、実際に関与する特殊なデータ型ですメタデータ(filenameとfiledata)情報のネストした表したがって、RODBC経由でDML SQL文だけでこのデータにアクセスすることはできませんが、具体的にはDAO SaveToFile()メソッドに接続するCOMインターフェイスを使用できます。
RDCOMClient
パッケージを使用して、アクセスオブジェクトライブラリへのインターフェイスを可能にすることを検討してください。注意:以下のコードを実行するには、.accdbファイルだけでなく、MSAccess.exe(MS Office GUIプログラム)がインストールされている必要があります。次のSQLクエリでは、ColAttachはテーブルの添付ファイルフィールドの名前であり、これらの修飾子は.filesataおよび.filenameを使用する必要があります。 DAOレコードセットのフィールド番号はゼロベースです(したがって、0と1)。複数の添付ファイルについて
library(RDCOMClient)
# INITIALIZING OBJECTS
accApp <- COMCreate("Access.Application")
accApp$OpenCurrentDatabase("C:\\Path\\To\\Database.accdb")
docmd <- accApp[["DoCmd"]]
db <- accApp$CurrentDb()
rst <- db$OpenRecordset("SELECT ColAttach.filedata, ColAttach.filename FROM TblAttach")
while(rst$EOF() == FALSE){
rst$Fields(0)$SaveToFile(paste0("C:\\Path\\To\\Output_", rst$Fields(1)$Value()))
rst$MoveNext()
}
# CLOSING OBJECTS
rst$close()
docmd$CloseDatabase()
accApp$Quit()
# RELEASING RESOURCES
accApp <- db <- docmd <- rst <- NULL
rm(rst, db, accApp)
gc()
、各名とFILEDATAに子レコードをループ値(異なるSQLに気付きます)。ファイルが存在するかどうかを確認して、それに応じてCOMエラーを受け取るようにしてください。
rst <- db$OpenRecordset("SELECT ID, ColAttach FROM TblAttach")
while(rst$EOF() == FALSE){
childRS <- rst[['ColAttach']]$Value()
while(childRS$EOF() == FALSE){
if (file.exists(paste0("C:\\Path\\To\\Output_", childRS[["filename"]]$Value()))) {
unlink(paste0("C:\\Path\\To\\Output_", childRS[["filename"]]$Value()))
}
childRS[["filedata"]]$SaveToFile(paste0("C:\\Path\\To\\Output_",
childRS[["filename"]]$Value()))
childRS$MoveNext()
}
rst$MoveNext()
}
ありがとう、私が検索しただけでした。ただし、フィールドに2つ以上の添付ファイルが含まれている場合は、エラーが発生します。 – user7021605
子レコードセットの別のループを実行する必要があります。 [posted link](https://msdn.microsoft.com/en-us/library/office/ff191852.aspx)に示されているVBAと同じロジック編集された回答を参照してください。回答が助けられた場合は同意し、解決を確認してください。 – Parfait
あなたは最高です!おかげでたくさん:) – user7021605
- 1. サーブレットにアクセスして添付ファイルをダウンロードする方法は?
- 2. ExchangeでEWSを使用してメールの添付ファイルをダウンロードする方法
- 3. REST APIを使用してOutlook添付ファイルをダウンロードしていますか?
- 4. IMAPとphpを使用して特定のフォルダにメールの添付ファイルをダウンロードする方法
- 5. ファイル名にワイルドカードを使用してpythonを使用して電子メールにファイルを添付する方法
- 6. skpsmtpmessageを使用してplistファイルを正しく添付する方法は?
- 7. OpenPopを使用して電子メールの添付ファイルを保存する方法
- 8. ファイルをダウンロードしてすぐに電子メールの添付ファイルとしてエクスポートする方法
- 9. C#アプリケーションでメールを受信して添付ファイルをダウンロードする
- 10. 大量にGmailの添付ファイルをダウンロードする方法
- 11. msアクセス2007を使用してビジュアルベーシックデータベースアプリケーションを作成する方法
- 12. イメージビューを電子メールの添付ファイルとして添付する方法は?
- 13. XElementをC#の添付ファイルとしてSMTPメッセージに添付する方法
- 14. Pythonを使用してメール添付ファイルを送信する方法
- 15. OutlookでC#winformアプリケーションを使用して添付ファイルを送信する方法
- 16. Httpを使用してJira 4.4から添付ファイルを削除する方法
- 17. PEARソープを使用してMime添付ファイルを送信する方法
- 18. telerikを使用してファイルを添付する方法Rad Asyncメールにアップロード
- 19. Android APIを使用してSMS/MMSメッセージにxmlファイルを添付する方法
- 20. vbaをmsアクセスで使用してデータベーステーブルの日付と日付の間に日付を挿入する方法
- 21. MicrosoftGraph APIを使用してメッセージ添付ファイルの部分コンテンツをダウンロード
- 22. PHP cURLライブラリを使用してhttp応答ヘッダーを使用して添付ファイルを取得する方法
- 23. Rails-複数のコントローラを使用してファイルを添付する
- 24. アクセス方法RelativeSourceを使用したTextboxのMultiBuindingの添付プロパティ
- 25. PHPMailer ZIPすべての添付ファイル
- 26. DocuSign添付ファイルをダウンロードする
- 27. sendfileファイルを添付ファイルとしてアップロードし、ファイルをダウンロードします
- 28. WebAPIでファイルを添付してオブジェクトをPOSTする方法は?
- 29. SmtpClientを使用して添付ファイルを送信する
- 30. 添付ファイルをPHPMailerを使用してアップロードする
私はこの質問に不公平です。私は長い間、MS Accessを使用していないので、これであなたを助けることはできません。 MSのアクセスフォーラムで尋ねたり、他のスクリプト言語を調べたりするかもしれません。 –
ちょうどコメント:同様のこと(バイナリセルの画像を扱う)を試してみましたが、私が見た場所を思い出すことはありませんでしたが、多くの時間を費やしてRODBCを通してアクセスする方法が見つけられませんでした。あなたの運が私のようなものなら、あなたは別の仕組みを見つける必要があるかもしれません。 – r2evans
私は、RODBCを使用してバイナリデータ(画像やpdfやExcelを含む他のファイル)を照会しています。あなたが勉強できる別の質問があります。 http://stackoverflow.com/questions/39581256/r-help-data-from-odbc-blob-not-matching-return-from-sql-query/39593187#39593187私はこれをMS SQL Serverでのみ行っています。これがAccessでどのように動作するかについてはコメントできません。 – Benjamin