Distributed Tuning Objects Guide (v11)

DTO コレクションを使った作業

コレクションとは、ほかの複数オブジェクトを含むオブジェクトです。

コレクションのインスタンス化

Visual Basic

Set キーワードを使用して変数をコレクション オブジェクトに設定します。

Dim result as DtoResult 
Dim my_session as New DtoSession 
Dim my_databases as DtoDatabases 
result = my_session.Connect("myserver", "username", "pw") 
 
if not(result=0) Then 
'Connect メソッドのエラー処理 
end if 
 
'オブジェクトまたはコレクションが値を返すタイプの場合は Set を使用する  
 
Set my_databases = my_session.Databases 

ASP

ASP を使用する場合、通常は DtoSession と DtoDictionary という 2 つのオブジェクトのインスタンスのみを直接作成する必要があります。Active Server Pages でオブジェクトのインスタンスを作成する場合、IIS の組み込みオブジェクトである Server オブジェクトの CreateObject 構文を使用します。

Set my_session = Server.CreateObject("DTO.DtoSession.2") 


メモ

複数の HTTP 呼び出しの間でオブジェクトを存在させたい場合、以下のコード例のように ISS の組み込みオブジェクトである Session オブジェクトを使用してオブジェクトの状態を保持する必要があります。


Set Session("my_session") = Server.CreateObject("DTO.DtoSession.2") 

ただし、データベース、DSN、テーブル、列、インデックスまたはセグメントなどのオブジェクトを新規作成する場合は、この同じ構文を使用します。各オブジェクトのプログラム ID は、前述の例で示す規則に従います。

その他のコレクションについては、前述の Visual Basic の Set 構文を使用することができます。

コレクション内のループ

Visual Basic

Visual Basic でコレクション内をループするには、For ループの使用とカウンターの使用という 2 つの方法があります。

For/Next ステートメントを使ってコレクション内をループする Visual Basic の構文を以下に示します。

'Categories コレクションを取得する 
Dim my_categories as DtoCategories 
Dim category as DtoCategory 
Set my_categories = my_session.Categories 
 
'コレクション内をループする 
For Each category In my_categories  
   settings = category.Settings 
Next 

カウンターを使ってコレクション内をループする Visual Basic の構文を以下に示します。

Dim column as DtoColumn 
Dim table as DtoTable 
Set table = dictionary.Tables("Billing") 
Dim i as long 
for i=1 to table.Columns.count 
  set column=table.Columns(i) 
  'ここで操作を実行 
next i 

ASP

Pervasive の設定のカテゴリ一覧を表示する ASP のサンプル コードを以下に示します。

<% 
Set Session("my_session") = Server.CreateObject("DTO.DtoSession.2") 
result = Session("my_session").Connect("myserver", "username", "pw") 
'Connect メソッドのエラー処理は表示しない 
 
Set my_categories = Session("my_session").Categories 
'次に、HTML の箇条書きリスト(<UL></UL>)内のカテゴリをループして出力する 
%> 
 
<ul> 
<% For each category in my_categories %> 
 
<% '等号(=)は HTML ストリーム内の変数を表示します。%> 
<% 'これは、VBScript 組み込みの Response.Write() %> 
<% 'メソッドのショートカットです。%> 
 
<li><%=cat.CategoryId> - <%=cat.Name%></li> 
 
<% Next %> 
</ul> 

メンバー数の取得

Visual Basic

Count プロパティを使用してコレクション内のオブジェクトの数を調べます。

Dim num_items as Integer 
Dim my_session as New DtoSession 
Dim result as DtoResult 
result = my_session.Connect("myserver", "username", "pw") 
'Connect メソッドのエラー処理は表示しない 
Set my_databases = my_session.Databases 
num_items = my_databases.Count 

ASP

Count プロパティを使用してコレクション内のオブジェクトの数を調べます。

<% 
Set Session("my_session") = Server.CreateObject("DTO.DtoSession.2") 
result = Session("my_session").Connect("myserver", "username", "pw") 
'Connect メソッドのエラー処理は表示しない 
Set my_databases = Session("my_session").Databases 
num_items = my_databases.Count 
'出力を HTML ストリームに書き込む 
Response.Write("<p>Number of databases = " & num_items) 
%> 

特定のメンバーの取得

Visual Basic と ASP

Item プロパティを使用して、コレクション内の特定のメンバー オブジェクトを取得します。

コレクション内のメンバー(要素)には序数を使ってアクセスすることができます。コレクションによっては、要素の一意のプロパティ(名前など)を使用して各要素にアクセスすることができます。すべての序数は 1 から始まります。

Item プロパティはコレクション オブジェクトのデフォルト プロパティなので、次の 2 つのステートメントは同一です。

Collection.Item(index) 
Collection(index) 

DTO オブジェクトの概要

DTO サンプルの参照場所