私は非常に単純なデータベースにアクセスしていますが、レコードごとにスキャンしたドキュメント (おそらく pdf) を添付する必要があります。これを行う最善の方法は何ですか。データベースはPC上のファイルにリンクするだけでなく、ファイルをコピーして保持する必要があります。つまり、元のファイルが失われた場合、データベースが移動またはコピーされても、ファイルは引き続きデータベース内からアクセスできます。これは可能ですか?それを行う最も簡単な方法は何ですか?マクロを書くことができるとしたら、どこから始めればよいかわかりません。また、テーブルのレポートを表示するときに、ドキュメントのサムネイルだけを表示したいと考えています。ありがとうございました。
3 に答える
他の回答者が指摘したように、データベース テーブル内にファイル データを保存することは、疑わしい方法です。そうは言っても、個人的には除外しませんが、そのオプションを使用する場合は、ファイル データを独自のバックエンド ファイル内の独自のテーブルに分割することを強くお勧めします。例えば:
Scanned files.mdb
(または)という新しいデータベース ファイルを作成しますScanned files.accdb
。- ( AutoNumber
Scans
、FileID
主キー)、MainTableID
(メイン データベース ファイルのメイン テーブルの主キーと一致)、FileName
(テキスト)、FileExt
(テキスト)、FileData
('OLE オブジェクト'、実際には単にBLOB - OLE オブジェクトは実際には使用しないでください。データベースがひどく肥大化するからです)。 - フロントエンドに戻り、参照を
Scans
リンク テーブルとして追加します。 - 少し VBA を使用して、
Scans
テーブルからファイルをアップロードおよび抽出します (この仕組みに興味がある場合は、別の質問を投稿してください)。 - 抽出されたデータを開くには、VBA
Shell
ルーチン (必要な場合) またはShellExecute
Windows API (= より適切なオプション IMO) を使用します。
新しい ACCDB 形式を使用している場合は、smk081 が示唆するように、「添付ファイル」フィールド タイプを使用できます。これは基本的に上記の手順のほとんどを自動的に実行しますが、「手動」で行うと柔軟性が高まります。たとえば、各ファイルに「DateScanned」または「DateEffective」フィールドを指定できます。
とはいえ、サムネイルの要件には、どのオプションを選択しても明示的なコーディングが必要です。Windowsファイル プレビュー API を活用することは可能かもしれませんが、これを調査する前にサムネイルが明確な要件であることは確かです。特に維持しやすい方法で。
テーブルで OLE フィールドを使用できますが、この方法は使用しないことを強くお勧めします。データベースはあっという間に巨大になり、後悔することになるでしょう。
代わりに、ファイルへのパスを格納するフィールドを追加し、ファイルをネットワーク上の 1 つのフォルダーに保持することを検討してください。その後、SHELL() コマンドを使用してファイルを開くことができます。Access データベースの復元と、問題が発生した場合の PDF ファイルの復元の違いは何ですか? これにより、データベースを管理可能なサイズに保ち、破損の可能性を減らします。