DTO を使用したカタログと辞書の作成および管理 : DtoDictionary オブジェクト
 
このページをシェアする                  
DtoDictionary オブジェクト
Zen 辞書を表すオブジェクトです。このオブジェクトは DtoDatabase オブジェクトに置き換わるため、使用することは推奨されません。DtoDictionary は、Open メソッドで辞書へのパスを指定する場合にのみ今後も使用できます。
プロパティ
Path
辞書オブジェクトのパスを返します。
コレクション
DtoTables コレクション
メソッド
Open メソッド
Create メソッド
Close メソッド
AddTable メソッド
DropTable メソッド
Reload メソッド
Delete メソッド
備考
辞書ファイルに影響するすべての操作は、このオブジェクトから行う必要があります。 このオブジェクトを使用してユーザーは、辞書のオープン、辞書の作成、テーブル情報の取得、テーブルの追加または削除を行うことができます。
メモ:ASP を使って、または Visual Basic の CreateObject メソッドを使ってこのオブジェクトのインスタンスを作成する場合、DtoDictionary のプログラム ID は、DTO2 の場合は "DTO.DtoDictionary.2"、DTO バージョン 1 の場合は "DTO.DtoDictionary.1" になります。これら 2 つのバージョンの違いについては、DTO2 を参照してください。
Dim result as DtoResult
Dim dictionary as New DtoDictionary
result = dictionary.Open("d:\MyDemodata")
関連項目
DtoTables コレクション
DtoTable オブジェクト
メソッドの詳細
Open メソッド
データベース名または辞書のパスを使ってデータ辞書ファイル セットを開きます。
構文
result = Object.Open(path[, user][, password])
引数
Object
DtoDictionary オブジェクト。
path
ローカルの場合、辞書ファイルまたは名前付きデータベースの名前があるディレクトリへの絶対パスです。
リモート サーバーに接続している場合、この引数に対し名前付きデータベースを使用することはできません。
user
DDF セットの任意のユーザー名。
password
DDF セットの任意のパスワード。
戻り値
result
メソッド呼び出しの結果を示す DtoResult(Long 型の値)。DtoSession オブジェクトの Error プロパティを使って結果の説明を取得します。
備考
メモ:引数 path には、DDF ファイルがあるディレクトリへのパス、あるいは ローカルの DBNAMES.CFG に含まれるデータベース名を使用することができます。 データベース名の作成および管理については、DtoDatabases コレクションを参照してください。
この操作は、辞書ファイルのセットを開く手段として使用されます。 このセットには、FILE.DDF、INDEX.DDF および FIELD.DDF が含まれます。 また、多くのオプション DDF ファイルも含まれています。 メモリを解放するために Close メソッドを呼び出すことを忘れないでください。 辞書セットを一度開くと、Close メソッドが呼び出されるまでほかの誰もその辞書セットに変更を行うことができません。
このメソッドで返されるエラーの詳細については、DtoSession オブジェクトError プロパティを使って取得することができます。
Dim dictionary as new DtoDictionary
Dim result as DtoResult
 
result = dictionary.Open("d:\MyDemodata")
Create メソッド
空のデータ辞書ファイルのセットを作成します。
構文
result = Object.Create(path[, username][, password])
引数
Object
DtoDictionary オブジェクト。
path
辞書ファイルを作成するディレクトリへの絶対パス。
username
DDF セットの任意のユーザー名。
password
DDF セットの任意のパスワード。
戻り値
result
メソッド呼び出しの結果を示す DtoResult(Long 型の値)。DtoSession オブジェクトの Error プロパティを使って結果の説明を取得します。
備考
path 引数に指定したディレクトリが存在しなかった場合、そのディレクトリの作成を試行します。 操作が成功した場合、file.ddf、field.ddf、index.ddf のセットが作成されます。
メモリを解放するために Close メソッドを呼び出すことを忘れないでください。 辞書セットが一度作成されると、その他のクライアントは Close メソッドが呼び出されるまでその辞書セットを開くことも変更を行うこともできません。
このメソッドで返されるエラーの詳細については、Error プロパティを使って取得することができます。 Open メソッドとは異なり、path パラメーターに指定できるのは絶対パスのみです。
Dim Dictionary As New DtoDictionary
Dim result as DtoResult
 
result = Dictionary.Create("C:\TEST", "login", "password")
If NOT result = Dto_Success Then
  MsgBox "Error"+ Session.Error(result)
End If
Close メソッド
データ辞書ファイルのセットを閉じます。Open メソッドを使って開いている、または Create メソッドを使って作成されていることが前提です。
構文
result = Object.Close
引数
Object
DtoDictionary オブジェクト。
戻り値
result
メソッド呼び出しの結果を示す DtoResult(Long 型の値)。DtoSession オブジェクトの Error プロパティを使って結果の説明を取得します。
備考
辞書ファイルのセットを Open メソッドを使って開いている、または Create メソッドを使って作成した後にこのメソッドを呼び出します。 エラー情報は Error プロパティを使って取得することができます。
Dim dictionary as new DtoDictionary
Dim result as DtoResult
 
result = dictionary.Open("d:\MyDemodata")
'
'ここで操作を実行
'
result = dictionary.Close
AddTable メソッド
データ辞書ファイルにテーブル情報を追加し、定義を一致させるためにデータ ファイルを作成します。
メモ:同じディレクトリに、ファイル名が同一で拡張子のみが異なるようなファイルを置かないでください。たとえば、同じディレクトリ内に Invoice.btr と Invoice.mkd という名前のデータ ファイルを作成しないでください。このような制限が設けられているのは、データベース エンジンがさまざまな機能でファイル名のみを使用し、ファイルの拡張子を無視するためです。ファイルの識別にはファイル名のみが使用されるため、ファイルの拡張子だけが異なるファイルは、データベース エンジンでは同一のものであると認識されます。
構文
result = Object.AddTable(table)
引数
Object
DtoDictionary オブジェクト。
table
DtoTable オブジェクト。
戻り値
result
メソッド呼び出しの結果を示す DtoResult(Long 型の値)。DtoSession オブジェクトの Error プロパティを使って結果の説明を取得します。
備考
このメソッドは、DDF ファイルにテーブル定義を追加し、テーブルの Location プロパティで指定したデータ ファイルの作成を試みます。 Location プロパティが空のままの場合、このメソッドでは tableName.mkd という名前のデータ ファイルの作成を試みます。この名前のテーブルが既に存在していた場合は、その名前に 1 つの番号を追加して再度作成を試みます。
この操作が正常終了するためには、少なくとも 1 列が定義されていなければなりません。
以下の例では、辞書オブジェクトを作成し、次にその辞書ファイルにテーブルを追加する方法を示します。
Dim Dictionary As New DtoDictionary
Dim Table As DtoTable
Dim Tables As DtoTables
Dim result As dtoResult
Dim Columns As DtoColumns
Dim Indexes As DtoIndexes
Dim Column As DtoColumn
Dim Index As DtoIndex
Dim Segments As DtoSegments
Dim Segment As DtoSegment
 
    result = Dictionary.Create("C:\TEST", "login", "password")
    If NOT result = Dto_Success Then
        MsgBox "Error"+ Session.Error(result)
    End If
 
' ******* テーブルの追加の開始 *******************
 
    Set Table = New DtoTable
 
    Set Column = New DtoColumn
    With Column
    .Decimal = 0
    .Flags = dtoColumnNullable
    .ISR = ""
    .Name = "F_Int"
    .Number = 0
    .Size = 4
    .Type = dtoTypeInteger
    End With
    Table.Columns.Add Column
 
    Set Column = New DtoColumn
    With Column
    .Decimal = 4
    .Flags = dtoColumnNullable + dtoColumnCaseInsensitive
    .ISR = ""
    .Name = "F_Str"
    .Number = 1
    .Size = 55
    .Type = dtoTypeLString
    End With
    Table.Columns.Add Column
 
Set Column = New DtoColumn
    With Column
    .Decimal = 4
    .Flags = dtoColumnCaseInsensitive
    .ISR = ""
    .Name = "F_Str_Second"
    .Number = 2
    .Size = 100
    .Type = dtoTypeLString
    End With
    Table.Columns.Add Column
 
    Set Column = New DtoColumn
    With Column
    .Decimal = 10
    .Flags = dtoColumnDefault
    .ISR = ""
    .Name = "F_Float"
    .Number = 3
    .Size = 8
    .Type = dtoTypeBFloat
    End With
    Table.Columns.Add Column
 
'インデックスを追加
    Set Index = New DtoIndex
    result = Index.AddSegment("F_Int", 0)
    Set Segment = New DtoSegment
    Segment.Number = 0
    Segment.ColumnName = "F_Int"
    Segment.Flags = dtoSegmentAscending
    Index.Segments.Add Segment
 
    Index.Name = "FintInd"
    Index.Number = 0
    Index.Flags = dtoIndexModifiable
    Table.Indexes.Add Index
'2 番目のインデックスを追加
    Set Index = New DtoIndex
    Set Segment = New DtoSegment
    Segment.Number = 0
    Segment.ColumnName = "F_Str"
    Segment.Flags = dtoSegmentAscending
    Index.Segments.Add Segment
    
    Set Segment = New DtoSegment
    Segment.Number = 1
    Segment.ColumnName = "F_Str_Second"
    Segment.Flags = dtoSegmentAscending
    Index.Segments.Add Segment
    
    Index.Name = "FStrTagInd"
    Index.Number = 1
    Index.Flags = dtoIndexModifiable
    Table.Indexes.Add Index
    
    Table.Overwrite = true
    Table.Flags = dtoTableTrueNullable
    Table.Name = "Table3"
 
    result = Dictionary.AddTable(Table)
 
    If NOT result = Dto_Success Then
        MsgBox "Error"+ Session.Error(result)
    End If
DropTable メソッド
現在の辞書からテーブルを削除します。
構文
result = Object.DropTable(tableName[, deleteFile])
引数
Object
DtoDictionary オブジェクト。
tableName
削除するテーブルの名前。
deleteFile
基となるデータ ファイルを削除するかどうかを示すブール値。
戻り値
result
メソッド呼び出しの結果を示す DtoResult(Long 型の値)。DtoSession オブジェクトの Error プロパティを使って結果の説明を取得します。
備考
この操作を成功させるには、辞書が正常に開かれている必要があります。
result = Dictionary.DropTable("Table3", true)
If NOT result = Dto_Success Then
    MsgBox "Error"+ Session.Error(result)
End If
Reload メソッド
辞書オブジェクトをリフレッシュします。
構文
result = Object.Reload
引数
Object
DtoDictionary オブジェクト。
戻り値
result
メソッド呼び出しの結果を示す DtoResult(Long 型の値)。DtoSession オブジェクトの Error プロパティを使って結果の説明を取得します。
Delete メソッド
辞書オブジェクトおよび対応する DDF ファイルを削除します。
構文
result = Object.Delete
引数
Object
DtoDictionary オブジェクト。
戻り値
result
メソッド呼び出しの結果を示す DtoResult(Long 型の値)。DtoSession オブジェクトの Error プロパティを使って結果の説明を取得します。