第 10 章: レコードとストリーム

適用先: Access 2013、Office 2013

ADO では現在、リレーショナル データベースなどのデータ ソース内の情報にアクセスするための主要な手段として Recordset オブジェクトが提供されています。 ただし、プロバイダーによっては、プロバイダーからのデータを操作できる代替または補足オブジェクトとして、 Record オブジェクトおよび Stream オブジェクトがサポートされています。 Record 動作の特性については、使用しているプロバイダーのマニュアルを参照してください。

レコード

レコード オブジェクトは、基本的に 1 行 の Recordsets として機能します。 ただし、 レコード の機能は Recordset と 比較して限られており、プロパティとメソッドが異なります。 Record オブジェクト内のデータのソースは、プロバイダーから 1 行のデータを返すコマンドにすることができます。 Recordset オブジェクトではなく Record オブジェクトを使用して、1 行のデータを返すクエリから結果を受信すると、より複雑な Recordset オブジェクトをインスタンス化するオーバーヘッドがなくなります。

特に、従来のリレーショナル データベースではないデータ ソースのプロバイダー (Microsoft OLE DB Provider for Internet Publishing) を使用することで、 Record オブジェクトを他の目的に使用することもできます。 処理する必要のある情報の多くは、データベース内のテーブルとしてではなく、電子メール システム内のメッセージおよび最新のファイル システム内のファイルとして存在していることがあります。 このような場合、 Record オブジェクトと Stream オブジェクトを使用すると、リレーショナル データベース以外のソースに格納された情報に容易にアクセスできるようになります。

Record オブジェクトは、ファイル システム内のディレクトリやファイル、メール システム内のフォルダー、メッセージなどのデータを表し、管理できます。 このような目的の場合、 Record のソースは、開かれた Connection オブジェクトと連動する、開かれた Recordset のカレント行または絶対 URL や相対 URL にすることができます。

通常、 Recordset は、フォルダーやディレクトリなどの階層内のコンテナーや親を表すときに使用されます。 Record は、ファイルやドキュメントなど、親コンテナーの 1 つのノードについて特定の情報を返すときに使用されます。 このような種類の情報を表すときに Records が使用される主な理由は、これらのデータ ソースが異なった要素を持つためです。 これは、各 Record のフィールドのセットおよび数が、それぞれ異なっていることを意味します。 データベースからの行を含む従来の Recordsets の要素は同種、つまり、各行のフィールドの数およびタイプは同じです。

Record オブジェクトを、Internet Publishing Provider などのプロバイダーからの異種データを処理するために使用する方法については、「インターネット発行に ADO を使用する」を参照してください。

ストリーム

Stream オブジェクトは、連続するバイトの読み取り、書き込み、および管理の手段を提供します。 このバイト ストリームは、テキストやバイナリであることもあり、システム リソースによってのみサイズが制限されます。 通常、ADO Stream オブジェクトは、次のような目的で使用されます。

  • 通常、Microsoft OLE DB Provider for Internet Publishing などのプロバイダーで使用される、ファイルやメッセージを構成するテキストやバイトを格納します。 Stream オブジェクトの使用の詳細については、「 インターネット発行に ADO を使用する」を参照してください。

Stream オブジェクトは、次のものに対して開くことができます。

  • URL で指定された単純なファイル。

  • Stream オブジェクトを含む Record または Recordset のフィールド。

  • ディレクトリまたは複合ファイルを表す Record オブジェクトまたは Recordset オブジェクトの既定のストリーム。

  • 単純なファイルの URL を含むリソース フィールド。

  • 特定のソースの指定なし。 この場合、 Stream オブジェクトはメモリで開かれます。 データを書き込み、別の Stream やファイルに保存できます。

  • Recordset 内の BLOB フィールド。

この章では、次のトピックについて説明します。