0

Reports3つのフィールドID(自動番号)、filename(文字列フィールド)、theFile(添付ファイルフィールド)を持つという名前のテーブルがあります。

私がしたいのは、SQLクエリを実行し、PDFファイルを添付ファイルフィールド(theFile)に挿入することです。

PDFファイルがC:ドライブ(C:\ report1.pdf)にあるとしましょう。以下のSQLクエリを試しましたが、機能しません。データベースにファイルを保存するのは良い習慣ではないことは知っていますが、試してみたいだけです。

CurrentDb.Execute "INSERT INTO Reports (filename,theFile) VALUES ('report1'," & C:\report1.pdf & ")"
4

3 に答える 3

2

データベースにファイルを保存するのが標準的な方法です。Accessは確かにそれをサポートしていますが、SQLを介してはサポートしていません。http://msdn.microsoft.com/en-us/library/office/bb258184%28v=office.12%29.aspxで詳しく説明されているように、DAOを使用する必要があります。

于 2013-03-03T00:18:56.657 に答える
0

「ファイル」は、Accessでサポートされている適切なSQLデータ型、使用可能なデータ型ではありません。

于 2013-03-02T23:20:06.760 に答える
0

それは正しいDerekです。そのようなSQLステートメントを実行しようとすると、毎回何らかのタイプのエラーメッセージが表示されます。私は自分のDBのためにこの主題を研究するのにかなりの時間を費やしました、そして私が理解していることから、いくつかのオプション/代替案があります。ただし、添付ファイルの列タイプを持ち、SQLを使用してファイルを挿入することは、Accessの現在の機能のオプションではありません。

データベースにファイルを保存することは悪い習慣ではありません。実際には標準的な方法です。ただし、ACCESSデータベースにファイルを保存しないことをお勧めします。これにはいくつかの理由があり、自分で調べることができますが、おそらく最も注目すべきは、Accessのファイルサイズ制限が2 GBであるため、ファイルを保存するとすぐにスペースが不足し、事態がさら​​に複雑になる可能性があることです。 。

オプションは次のとおりです。

  1. 列のデータ型をOLEオブジェクトに変更し、ある種のストリームリーダーを使用してファイルをバイナリデータに変換してから、SQLステートメントを使用してそれらをDBにロードします
  2. テーブル/添付ファイルを直接操作するには、組み込みのAccessユーザーインターフェイスを使用します
  3. DAO db接続を確立し、Accessのrecordset.LoadFromFile関数を使用します
  4. ファイルへのリンクをAccessDBに保存するだけです

4番目のオプションが推奨される方法です。非常にシンプルで、複雑なコードや2GBのストレージ制限について心配する必要はありません。

于 2018-03-25T20:26:56.493 に答える