2009-08-06 13 views
1

フィールドの1つに「添付ファイル」データ型(Access 2007の新機能)を使用するAccess 2007データベースがあります。このフィールドは、いくつかの添付ファイルを含むことができる魔法の "多値"フィールドです。ODBCを使用してAccess 2007の複数値フィールドをクエリする

単一のODBCクエリを使用して、データベースのすべての行について、このフィールドの内容を簡単に確認したいと考えています。理想的には、元のテーブルの各行はちょうど1行でなければならず、すべての添付ファイルを単一のデータベースセルとして返すようにしたいと思います。完全な世界では、単一のINSERT INTOクエリを使用して、その添付ファイルのセットを別のテーブルに再挿入することは可能です。

は、私はそれは難しい注文かもしれないと思うので、私がする必要がある場合、私はのために解決したい:

  • 与えられた添付ファイルフィールドに私の添付ファイルの数を指示するSQLクエリ

か、最悪の場合:

  • 指定された行の添付ファイルが空かそうでないかどうか私に指示するSQLクエリ。

ネット上の複数値のフィールドについて、良い文書を見つけることができないようです。おそらく彼らは新しいものかもしれない。

思考?彼はしていませんが

(PS複数値フィールドが悪であることを私に言って気にしないでください。私はすでに知っている。私は、データベースを作ったものではありませんよ。)

+0

「有害とみなされる多値データ型」(http://www.theregister.co.uk/2006/07/18/multivalued_datatypes_access/print.html)...ああ、申し訳ありませんが、あなたは言っていません。 * 教えてください。無視する;) – onedaywhen

答えて

3

を参照してくださいODBC経由して、それを実行したい場合は、アクセス2007の内部からクエリを実行していると仮定し文字列を入力し、列を照会します。adLongVarWChar(つまりMEMO)の列を取得する必要があります。値はセミコロン文字で区切られたファイル名です。したがって、ファイルのリストを取得するだけで、単純な解析が行われます。

添付ファイルをADOを使用して取得することは可能ですが、まだ完了していません。 OLEDB:Support Complex Data=Trueを使用すると、タイプadIDispatchの列、つまりオブジェクトが得られます。そのオブジェクトが何であるか、私は知らない(私はそれがADODB.Recordsetであることを望んだが、期待しない)。

+0

甘い、それは多くを助ける;私は少なくとも、文字列を解析することによって添付ファイルの数を見つけることができます。そして、私は別のクエリを使用して生のコンテンツを得ることができるかもしれませんが、それはとにかく別のタスクです... – apenwarr

1

いくつかの情報のためhttp://www.access-freak.com/tutorials.html#Tutorial07を参照してください。良いスクリーンショットやクエリのSQLを持っている。彼のウェブサイトは、フォーマットされていても読みやすいものではありません。

これは、あなたが、接続にOLEDB:Support Complex Data=Trueを使用してせずにデータソースに接続するADOを使用できる場合http://groups.google.ca/group/microsoft.public.data.odbc/browse_thread/thread/d0ee29cc5e54e0fb

+0

MicrosoftはACE 2007の複雑なデータに対してADOを推奨していますか?非常に興味深い;) – onedaywhen

+0

興味深いことに、彼らは単にODBCを使ってこのようなことをサポートしていないことに興味があります。私はそれがAccess/JETデータベースで見た最初のインスタンスだと思います。 – apenwarr

関連する問題