DTO を使用したカタログと辞書の作成および管理
以下のトピックでは、Distributed Tuning Objects のカタログ グループを構成するオブジェクトについて説明します。
DtoDatabases コレクション
プロパティ
メソッド
備考
Count プロパティを使用してコレクション内のメンバー数を調べます。
例
'セッション オブジェクトのインスタンスを作成し、サーバーに接続する
Dim my_session as New DtoSession
Dim result as DtoResult
result = my_session.Connect("myserver", "username", "password")
'セッション オブジェクトを使用して Databases コレクションを取得する
Dim my_databases as DtoDatabases
Set my_databases = my_session.Databases
関連項目
メソッドの詳細
Add
DtoDatabases コレクションに項目を追加します。
構文
result = Collection.Add(Object[, dsnName])
引数
戻り値
備考
このメソッドはオブジェクト タイプのパラメーターを使用します。このため、コレクションにオブジェクトを追加する前に、まずオブジェクトのインスタンスを作成してそのプロパティを設定する必要があります。
このメソッドは、指定したデータベースをコレクションとサーバー上の基となる DBNAMES.CFG ファイルに追加します。
例
Dim result As dtoResult
Dim database As DtoDatabase
Set database = New DtoDatabase
'新しいデータベースにプロパティを設定する
database.Name = "MyDemodata"
database.DdfPath = "C:\test"
database.DataPath = "C:\test"
database.Flags = dtoDbFlagCreateDDF + dtoDbFlagRI
result = my_session.Databases.Add(database)
If NOT result = Dto_Success Then
MsgBox "Error"+ Session.Error(result)
End If
Remove
DtoDatabases コレクションから項目を削除します。
構文
result = Collection.Remove(database[, deleteDDF])
引数
戻り値
備考
このメソッドは、データベース コレクションおよび基となる DBNAMES.CFG ファイルから項目を削除します。
例
Dim result As dtoResult
result = my_session.Databases.Remove("MyDemodata",1)
If NOT result = Dto_Success Then
MsgBox "Error"+ my_session.Error(result)
End If
DtoDatabase オブジェクト
プロパティ
コレクション
メソッド
備考
Secure メソッドおよび UnSecure メソッドは、データベースが閉じている場合にのみ使用可能です。
例
以下の例では、セッション オブジェクトのインスタンスを作成し、サーバーに接続する方法を示します。
'セッション オブジェクトのインスタンスを作成し、サーバーに接続する
Dim my_session as New DtoSession
Dim result as DtoResult
result = my_session.Connect("myserver", "username", "password")
'セッション オブジェクトを使用して Databases コレクションを取得する
Dim my_databases as DtoDatabases
Set my_databases = my_session.Databases
'最初のデータベースを取得し、その辞書のパスを照会する
Dim first_database as DtoDatabase
Dim dictionarypath as string
Set first_database = my_databases(1)
dictionarypath = first_database.DdfPath
以下の例では、"Demodata" サンプル データベースで DBCodePage プロパティを使用してコード ページを取得および設定する方法を示します。
Dim m_dtoSession1 As New DtoSession
Dim result As dtoResult
result = m_dtoSession1.Connect("localhost", "", "")
Dim sCodePage As String
sCodePage = m_dtoSession1.Databases("DEMODATA").DBCodePage
MsgBox "Code Page for database (before change): " & CStr(sCodePage)
If result = Dto_Success Then
Rem Set the code page for the database by passing in
Rem the code page number (for example, 0, 932, 1252,
Rem and so forth).
m_dtoSession1.Databases("DEMODATA").DBCodePage = 0
End If
MsgBox "Code Page for database: " & CStr(m_dtoSession1.Databases("DEMODATA").DBCodePage)
m_dtoSession1.Disconnect
関連項目
メソッドの詳細
AddUserToGroup
既存ユーザーをデータベースの既存グループに追加します。
構文
result = Object.AddUserToGroup(username, groupname)
引数
戻り値
備考
この関数は、指定したグループまたはユーザーがデータベースにあらかじめ存在していない場合や、ユーザーが別のグループのメンバーである場合は失敗します。
以下の前提条件を満たす必要があります。
• まずセッションを作成し、次に
Open を使って "Master" ユーザーとしてデータベースを正常に開いておく。
• 関連するデータベースはデータベース レベルのセキュリティが有効である。
• ユーザーおよびグループは指定したデータベースに既に存在している。
• ユーザーは別のグループのメンバーではない。
次の事後条件を満たす必要があります。
• Close を使ってデータベースを閉じ、リソースを解放する。
例
Function AddUserToGroup(sUserName As String, sGroupName As String) As Boolean
Dim res As dtoResult
Dim m_dbn As New DtoDatabase
Dim m_dbn.Session = m_dto
Dim m_dbn.Name = "demodata"
res = m_dbn.Open("Master", "1234")
If res = Dto_Success Then
'正常に開いたら、グループにユーザーを追加しましょう
res = m_dbn.AddUserToGroup(sUserName, sGroupName)
If res <> Dto_Success Then
LogResult("グループへのユーザーの追加でエラーが発生しました:" & CStr(res))
Else
LogResult("ユーザー " & sUserName & " がグループ " & sGroupName & " に追加されました。")
End If
End If
m_dbn.Close
End Function
AlterUserName
指定されたデータベースの既存のユーザーの名前を変更します。
構文
result = Object.AlterUserName(username, new_username)
引数
戻り値
備考
• まずセッションを作成し、次に
Open を使って "Master" ユーザーとしてデータベースを正常に開いておく。
• 関連するデータベースはデータベース レベルのセキュリティが有効である。
• ユーザー名は指定したデータベースに既に存在している。
• 新しいユーザー名が指定したデータベースに存在していない。
次の事後条件を満たす必要があります。
• Close を使ってデータベースを閉じ、リソースを解放する。
例
Function AlterUserName(sUserName As String, sNewUserName As String) As Boolean
Dim res As dtoResult
Dim m_dbn As New DtoDatabase
Dim m_dbn.Session = m_dto
Dim m_dbn.Name = "demodata"
res = m_dbn.Open("Master", "1234")
If res = Dto_Success Then
'正常に開いたら、ユーザー名を変更しましょう
res = m_dbn.AlterUserName(sUserName, sNewUserName)
If res <> Dto_Success Then
LogResult("ユーザー名の変更でエラーが発生しました:" & CStr(res))
Else
LogResult("ユーザー名は正常に変更されました。新しいユーザー名:" & sNewUserName)
End If
End If
m_dbn.Close
End Function
AlterUserPassword
既存のユーザーのパスワードを変更します。
構文
result = Object.AlterUserPassword(username, new_password)
引数
戻り値
備考
• まずセッションを作成し、次に
Open を使って "Master" ユーザーとしてデータベースを正常に開いておく。
• 関連するデータベースはデータベース レベルのセキュリティが有効である。
• ユーザー名は指定したデータベースに既に存在している。
次の事後条件を満たす必要があります。
• Close を使ってデータベースを閉じ、リソースを解放する。
例
Function AlterUserPassword(sUser As String, sNewPassword As String) As Boolean
Dim res As dtoResult
Dim m_dbn As New DtoDatabase
Dim m_dbn.Session = m_dto
Dim m_dbn.Name = "demodata"
res = m_dbn.Open("Master", "1234")
If res = Dto_Success Then
'正常に開いたら、ユーザーのパスワードを変更しましょう
res = m_dbn.AlterUserPassword(sUser, sNewPassword)
If res <> Dto_Success Then
LogResult("ユーザーのパスワードの変更でエラーが発生しました:" & CStr(res))
Else
LogResult("ユーザーのパスワードは正常に変更されました。")
End If
End If
m_dbn.Close
End Function
Close
Open メソッドを使用して開いたデータ辞書ファイルのセットを閉じます。
構文
result = Object.Close
引数
戻り値
備考
Open メソッドを使ってデータベースを開い後にこのメソッドを呼び出します。エラー情報は Error プロパティを使って取得することができます。
例
Dim m_database as new DtoDatabase
Dim result as DtoResult
result = m_database.Open("dbuser","pwd")
' ここで操作を実行
'
result = m_database.Close
Copy
現在のデータベースを基にして新しいデータベースを作成します。
構文
result = Object.Copy(username, password, newDBname, newDictionaryPath, newDataPath)
引数
戻り値
備考
コピーされたデータベースにおいて参照整合性は保持されます。
このメソッドで返されるエラーの詳細については、Error プロパティを使って取得することができます。
例
Dim Database As New DtoDatabase
Dim result as DtoResult
Database.Session = my_session 'セッションが存在すると仮定
Database.Name = "DEMODATA"
'セキュリティが設定されていないデータベースではユーザー名とパスワードは不要
result = Database.Copy("", "", "DEMODATA2", "D:\DEMODATA2", "D:\DEMODATA2")
If NOT result = Dto_Success Then
MsgBox "Error"+ Session.Error(result)
End If
CreateGroup
既存のデータベースに新しいユーザー グループを作成します。
構文
result = Object.CreateGroup(groupname)
引数
戻り値
備考
• まずセッションを作成し、次に
Open を使って "Master" ユーザーとしてデータベースを正常に開いておく。
• 関連するデータベースはデータベース レベルのセキュリティが有効である。
• 同じ名前のグループが指定したデータベースに存在していない。
次の事後条件を満たす必要があります。
• Close を使ってデータベースを閉じ、リソースを解放する。
例
Function CreateGroup(sGroupName As String) As Boolean
Dim res As dtoResult
Dim m_dbn As New DtoDatabase
Dim m_dbn.Session = m_dto
Dim m_dbn.Name = "demodata"
res = m_dbn.Open("Master", "1234")
If res = Dto_Success Then
'正常に開いたら、グループを作成しましょう
res = m_dbn.CreateGroup(sGroupName)
If res <> Dto_Success Then
LogResult("グループの作成でエラーが発生しました:" & CStr(res))
Else
LogResult("グループ " & sGroupName & " が作成されました。")
End If
End If
m_dbn.Close
End Function
CreateUser
既存のデータベースに新しいユーザーを作成します。任意で、パスワードを設定することと、新しいユーザーを既存のグループに割り当てることができます。
構文
result = Object.CreateUser(username[, password][, groupname])
引数
戻り値
備考
以下の前提条件を満たす必要があります。
• まずセッションを作成し、次に
Open を使って "Master" ユーザーとしてデータベースを正常に開いておく。
• 関連するデータベースはデータベース レベルのセキュリティが有効である。
• 同じ名前のユーザーが指定したデータベースに存在していない。
次の事後条件を満たす必要があります。
• Close を使ってデータベースを閉じ、リソースを解放する。
例
Function CreateUser(sUserName As String, sPassword As String, sGroupName As String) As Boolean
Dim res As dtoResult
Dim m_dbn As New DtoDatabase
Dim m_dbn.Session = m_dto
Dim m_dbn.Name = "demodata"
res = m_dbn.Open("Master", "1234")
If res = Dto_Success Then
'正常に開いたら、グループを作成しましょう
res = m_dbn.CreateUser(sUserName, sPassword, sGroupName)
If res <> Dto_Success Then
LogResult("ユーザーの作成でエラーが発生しました:" & CStr(res))
Else
LogResult("ユーザー " & sUserName & " がグループ " & sGroupName & " に作成されました。")
End If
End If
m_dbn.Close
End Function
DropGroup
データベースから既存のグループを削除します。
構文
result = Object.DropGroup(groupname)
引数
戻り値
備考
• まずセッションを作成し、次に
Open を使って "Master" ユーザーとしてデータベースを正常に開いておく。
• 関連するデータベースはデータベース レベルのセキュリティが有効である。
• 同じ名前のグループが指定したデータベースに存在していない。
• グループにはメンバーが含まれていない。
次の事後条件を満たす必要があります。
• Close を使ってデータベースを閉じ、リソースを解放する。
例
Function DropGroup(sGroupName As String) As Boolean
Dim res As dtoResult
Dim m_dbn As New DtoDatabase
Dim m_dbn.Session = m_dto
Dim m_dbn.Name = "demodata"
res = m_dbn.Open("Master", "1234")
If res = Dto_Success Then
'正常に開いたら、グループを削除しましょう
res = m_dbn.DropGroup(sGroupName)
If res <> Dto_Success Then
LogResult("グループの削除でエラーが発生しました:" & CStr(res))
Else
LogResult("グループ " & sGroupName & " が削除されました。")
End If
End If
m_dbn.Close
End Function
DropUser
データベースから既存のユーザーを削除します。
構文
result = Object.DropUser(username)
引数
戻り値
備考
• まずセッションを作成し、次に
Open を使って "Master" ユーザーとしてデータベースを正常に開いておく。
• 関連するデータベースはデータベース レベルのセキュリティが有効である。
• 同じ名前のユーザーが指定したデータベースに存在している。
次の事後条件を満たす必要があります。
• Close を使ってデータベースを閉じ、リソースを解放する。
例
Function DropUser(sUserName As String) As Boolean
Dim res As dtoResult
Dim m_dbn As New DtoDatabase
Dim m_dbn.Session = m_dto
Dim m_dbn.Name = "demodata"
res = m_dbn.Open("Master", "1234")
If res = Dto_Success Then
'正常に開いたら、ユーザーを削除しましょう
res = m_dbn.DropUser(sUserName)
If res <> Dto_Success Then
LogResult("ユーザーの削除でエラーが発生しました:" & CStr(res))
Else
LogResult("ユーザー " & sUserName & " の削除は完了しました。")
End If
End If
m_dbn.Close
End Function
Open
指定したユーザー名とパスワードでデータベースへの接続を開きます。
構文
result = Object.Open(username, password)
引数
戻り値
備考
この操作は、辞書ファイルのセットを開く手段として使用されます。このセットには、FILE.DDF、INDEX.DDF および FIELD.DDF が含まれます。また、多くのオプション DDF ファイルも含まれています。メモリを解放するために Close メソッドを呼び出すことを忘れないでください。データベースを一度開くと、Close メソッドが呼び出されるまでほかの誰もその辞書セットに変更を行うことができません。
データベースが開いている間は、Secure または UnSecure メソッドを実行できません。
このメソッドで返されるエラーの詳細については、
DtoSession オブジェクトの
Error プロパティを使って取得することができます。
例
Dim m_session as new DtoSession
Dim m_database as new DtoDatabase
Dim result as DtoResult
result = m_session.Connect("myserver","user","pwd")
m_database.Session = m_session
m_database.Name = "DEMODATA"
result = m_database.Open("dbuser","pwd")
RemoveUserFromGroup
既存のグループから既存のユーザーを削除します。
構文
result = Object.RemoveUserFromGroup(groupname, username)
引数
戻り値
備考
• まずセッションを作成し、次に
Open を使って "Master" ユーザーとしてデータベースを正常に開いておく。
• 関連するデータベースはデータベース レベルのセキュリティが有効である。
• ユーザーおよびグループは指定したデータベースに既に存在している。
• ユーザーは別のグループのメンバーではない。
次の事後条件を満たす必要があります。
• Close を使ってデータベースを閉じ、リソースを解放する。
例
Function RemoveUserFromGroup(sUserName As String, sGroupName As String) As Boolean
Dim res As dtoResult
Dim m_dbn As New DtoDatabase
Dim m_dbn.Session = m_dto
Dim m_dbn.Name = "demodata"
res = m_dbn.Open("Master", "1234")
If res = Dto_Success Then
'正常に開いたら、グループからユーザーを削除しましょう
res = m_dbn.RemoveUserFromGroup(sGroupName, sUserName)
If res <> Dto_Success Then
LogResult("グループからのユーザーの削除でエラーが発生しました:" & CStr(res))
Else
LogResult("ユーザー " & sUserName & " をグループ " & sGroupName & " から削除しました。")
End If
End If
m_dbn.Close
End Function
Secure
データベースのセキュリティを有効にします。
構文
result = Object.Secure(user, password)
引数
戻り値
備考
データベースのセキュリティを有効にする際、データベース ユーザー名として Master を指定し、パスワードを選択する。データベースのセキュリティは、そのデータベースに定義されているアクセス権に基づいて施行されます。このセキュリティは SQL または ODBC アクセス方法で見られる動作と一致します。
セキュリティを設定する場合は、データベースが閉じていることを確認してください。
このメソッドで返されるエラーの詳細については、
DtoSession オブジェクトの
Error プロパティを使って取得することができます。
例
Dim m_database as new DtoDatabase
Dim result as DtoResult
m_database.Name = "DEMODATA"
m_database.Session = my_session 'セッションが存在すると仮定
result = m_database.Secure("Master", "password")
UnSecure
データベースのセキュリティを無効にします。
構文
result = Object.UnSecure(user, password)
引数
戻り値
備考
データベースのセキュリティを無効にする際、データベース ユーザーとして Master を指定し、Master ユーザー パスワードを提供する必要があります。
セキュリティを無効にする場合は、データベースが閉じていることを確認してください。
このメソッドで返されるエラーの詳細については、
DtoSession オブジェクトの
Error プロパティを使って取得することができます。
例
Dim m_database as new DtoDatabase
Dim result as DtoResult
m_database.Name = "DEMODATA"
m_database.Session = my_session 'セッションが存在すると仮定
result = m_database.UnSecure("Master", "password")
DtoDSNs コレクション
DtoDSN オブジェクトのコレクションです。
プロパティ
メソッド
備考
Count プロパティを使用してコレクション内のメンバー数を調べます。
例
'セッション オブジェクトのインスタンスを作成する
Dim my_session as New DtoSession
Dim result as DtoResult
'サーバーに接続する
result = my_session.Connect("myserver", "username", "password")
'DSN コレクションを取得する
Dim my_dsns as DtoDSNs
Set my_dsns = my_session.DSNs
関連項目
メソッドの詳細
Add
DtoDSNs コレクションに項目を追加し、サーバーに DSN を作成します。
構文
result = Collection.Add(Object)
引数
戻り値
備考
このメソッドはオブジェクト タイプのパラメーターを使用します。このため、コレクションにオブジェクトを追加する前に、まずオブジェクトのインスタンスを作成してそのプロパティを設定する必要があります。
例
Dim result As dtoResult
Dim DSNs As DtoDSNs
Dim dsn As DtoDSN
Set dsn = New DtoDSN
'新しい DSN にプロパティを設定する
dsn.Name = "MyDemodata_DSN"
dsn.Description = "a sample DSN"
dsn.Dbname = "MyDemodata"
dsn.Openmode = dtoNormalDSNOpenMode
result = my_session.DSNs.Add(dsn)
If NOT result = Dto_Success Then
MsgBox "Error"+ my_session.Error(result)
End If
Remove
DtoDSNs コレクションから DSN 項目を削除し、サーバーからも削除します。
構文
result = Collection.Remove(dsn)
引数
戻り値
備考
このメソッドでは、関連するデータベースまたはデータベース名を削除しません。
例
Dim result As dtoResult
Dim DSNs As DtoDSNs
result = my_session.DSNs.Remove("MYDSN")
If NOT result = Dto_Success Then
MsgBox "Error"+ my_session.Error(result)
End If
DtoDSN オブジェクト
Zen DSN を表すオブジェクトです。
プロパティ
メソッド
なし
備考
特定のデータベースに関する情報を取得するには、
DtoDatabase オブジェクトを使用します。
例
DSN の関連するデータベース名を照会するには
'セッション オブジェクトのインスタンスを作成する
Dim my_session as New DtoSession
'サーバーに接続する
my_session.Connect("myserver", "username", "password")
'セッション オブジェクトを使用して Databases コレクションを取得する
my_dsns = my_session.DSNs
first_dsn = my_dsns.Item(1)
dsn_dbname = first_dsn.DbName
新しい DSN を追加するには
'セッション オブジェクトのインスタンスを作成する
Dim my_session as New DtoSession
Dim result as dtoResult
'サーバーに接続する
result = my_session.Connect("myserver", "username", "password")
'セッション オブジェクトを使用して DSN コレクションを取得する
Dim my_dsns as DtoDSNs
Set my_dsns = my_session.DSNs
'新しい DtoDSN オブジェクトを作成する
Dim NewDSN as New DtoDSN
NewDSN.DbName = "DEMODATA"
NewDSN.Description = "A DSN for the DEMODATA db"
NewDSN.Name = "Demodata_DSN"
'新しい DSN をコレクションに追加する
result = my_dsns.Add(NewDSN)
エンコード変換を取得または設定するには
Dim m_dtoSession1 As New DtoSession
Dim result As dtoResult
result = m_dtoSession1.Connect("localhost", "", "")
Dim sTranslate As String
Dim iTranslate As Integer
iTranslate = m_dtoSession1.DSNs("DEMODATA").Translate
If iTranslate = 0 Then sTranslate = "None"
If iTranslate = 1 Then sTranslate = "OEM/ANSI Conversion"
If iTranslate = 2 Then sTranslate = "Automatic"
MsgBox "DSN Translate Setting (before change): " & sTranslate
If result = Dto_Success Then
Rem set the encoding translation.
m_dtoSession1.DSNs("DEMODATA").Translate = 1
End If
iTranslate = m_dtoSession1.DSNs("DEMODATA").Translate
If iTranslate = 0 Then sTranslate = "None"
If iTranslate = 1 Then sTranslate = "OEM/ANSI Conversion"
If iTranslate = 2 Then sTranslate = "Automatic"
MsgBox "DSN Translate Setting (after change): " & sTranslate
m_dtoSession1.Disconnect
関連項目
DtoDictionary オブジェクト
Zen 辞書を表すオブジェクトです。このオブジェクトは
DtoDatabase オブジェクトに置き換わるため、使用することは推奨されません。DtoDictionary は、Open メソッドで辞書へのパスを指定する場合にのみ今後も使用できます。
プロパティ
コレクション
メソッド
備考
辞書ファイルに影響するすべての操作は、このオブジェクトから行う必要があります。このオブジェクトを使用してユーザーは、辞書のオープン、辞書の作成、テーブル情報の取得、テーブルの追加または削除を行うことができます。
メモ: 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")
関連項目
メソッドの詳細
Open
データベース名または辞書のパスを使ってデータ辞書ファイル セットを開きます。
構文
result = Object.Open(path[, user][, password])
引数
戻り値
備考
メモ: 引数
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[, user][, password])
引数
戻り値
備考
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
引数
戻り値
備考
辞書ファイルのセットを 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)
引数
戻り値
備考
このメソッドは、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])
引数
戻り値
備考
この操作を成功させるには、辞書が正常に開かれている必要があります。
例
result = Dictionary.DropTable("Table3", true)
If NOT result = Dto_Success Then
MsgBox "Error"+ Session.Error(result)
End If
Reload
辞書オブジェクトをリフレッシュします。
構文
result = Object.Reload
引数
戻り値
Delete
辞書オブジェクトおよび対応する DDF ファイルを削除します。
構文
result = Object.Delete
引数
戻り値
DtoTables コレクション
DtoTable オブジェクトのコレクションを返します。
プロパティ
メソッド
なし
備考
このコレクションにはユーザー定義テーブルのみが含まれ、システム テーブルは含まれません。辞書は正常に開かれている必要があります。コレクションにテーブルを追加、あるいはコレクションからテーブルを削除するには、AddTable と DropTable を使用します。
Count プロパティを使用して DtoTables コレクション内のメンバー数を見つけます。
例
DtoDatabase の使用
Tables コレクションを取得する前に、まずデータベース オブジェクトに対して Open メソッドを実行する必要があります。これはそのデータベースにセキュリティが設定されていない場合でも必要です。
Dim m_session as new DtoSession
Dim m_database as new DtoDatabase
Dim table as new DtoTable
Dim result as DtoResult
result = m_session.Connect("server","user","password")
m_database.Name = "demodata"
m_database.Session = m_session
'データベースを開く。データベースのセキュリティは設定されていないことを前提とする。
result = m_database.Open("","")
For each table in m_database.Tables
if table.Name = "Billing" then
'billing テーブルの検索
End If
next
m_database.Close 'データベースを開いていた場合は閉じる
DtoDictionary の使用
Dim dictionary as new DtoDictionary
Dim table as new DtoTable
Dim result as DtoResult
Dim location as string
'Mytable テーブルの場所を検索する
result = dictionary.Open("d:\MyDemodata")
For Each table In dictionary.Tables
If table.Name = "Mytable" Then
location = table.Location
exit For
End If
next
関連項目
DtoTable オブジェクト
データベース内のテーブルを表すオブジェクトです。
プロパティ
コレクション
メソッド
なし
備考
DtoTable オブジェクトには Columns と Indexes という 2 つのコレクション オブジェクトがあります。列やインデックスに関連するすべての操作は、これらのオブジェクトを使って行います。
辞書に新しいテーブルを追加するには、
AddTable を使用します。
辞書からテーブルを削除するには、
DropTable を使用します。
例
DtoTable オブジェクトを新規作成する例については、
AddTable を参照してください。
Dim dictionary as new DtoDictionary
Dim table as new DtoTable
Dim result as DtoResult
Dim location as string
'Mytable テーブルのファイル名を調べる
result = dictionary.Open("d:\MyDemodata")
For Each table In dictionary.Tables
If table.Name = "Mytable" Then
location = table.Location
End If
next
関連項目
DtoColumns コレクション
テーブル内のすべての列を表す DtoColumn オブジェクトのコレクションです。
プロパティ
メソッド
備考
DtoTable オブジェクトのプロパティからこのコレクションを取得することができます。
Count プロパティを使用してコレクション内のメンバー数を調べます。
例
Dim dictionary as new DtoDictionary
dictionary.Open("d:\MyDemodata")
students_table = dictionary.GetTable("STUDENT")
students_cols = students_table.Columns
関連項目
メソッドの詳細
Add
DtoColumns コレクションに項目を追加します。
構文
result = Collection.Add(Object)
引数
戻り値
備考
このメソッドは DtoColumn タイプのパラメーターを使用します。このため、コレクションにオブジェクトを追加する前に、まずオブジェクトのインスタンスを作成してそのプロパティを設定する必要があります。
メモ: 既存の Zen テーブルに列を追加する場合に、このメソッドを使用することはできません。このメソッドでは、データ ファイルおよび DDF ファイルを変更しません。テーブルを作成する前に、メモリ内で列を追加する場合にのみ使用できます。参考として、
AddTable のコード例をご覧ください。
Remove
DtoColumns コレクションから項目を削除します。
構文
result = Collection.Remove(column)
引数
戻り値
備考
DtoColumns コレクション内の項目の列名または 1 から始まる序数を渡すことができます。
メモ: 既存の Zen テーブルから列を削除する場合に、このメソッドを使用することはできません。このメソッドでは、データ ファイルおよび DDF ファイルを変更しません。テーブルを作成する前に、メモリ内で列を削除する場合にのみ使用できます。参考として、
AddTable のコード例をご覧ください。
Clear
DtoColumns コレクションからすべての項目を削除します。
構文
result = Collection.Clear
引数
戻り値
備考
このメソッドはメモリ内にあるテーブルからすべての列を削除します。
メモ: 既存の Zen テーブルから列を削除する場合に、このメソッドを使用することはできません。このメソッドでは、データ ファイルおよび DDF ファイルを変更しません。テーブルを作成する前に、メモリ内ですべての列を削除する場合にのみ使用できます。参考として、
AddTable のコード例をご覧ください。
DtoColumn オブジェクト
このオブジェクトはテーブルの列を表します。
プロパティ
メソッド
なし
備考
このオブジェクトを使用すれば、特定のテーブル列のプロパティを表示することができます。
例
'辞書をインスタンス化して開く
Dim dictionary as new DtoDictionary
Dim result as DtoResult
result = dictionary.Open("d:\MyDemodata")
'MyDemodata データベースから STUDENT テーブルを取得する
Dim students_table as DtoTable
Set students_table = dictionary.Tables("STUDENTS")
'STUDENT テーブルから Columns コレクションを取得する
Dim students_cols as DtoColumns
Set students_cols = students_table.Columns
'最初の列を取得し、その名前を取得する
Dim first_col as DtoColumn
Set first_col = students_cols(1)
name = first_col.Name
関連項目
DtoIndexes コレクション
テーブルのインデックスを表す DtoIndex オブジェクトのコレクションです。
プロパティ
メソッド
備考
Count プロパティを使用してコレクション内のメンバー数を調べます。
例
'辞書をインスタンス化して開く
Dim dictionary as new DtoDictionary
Dim result as DtoResult
result = dictionary.Open("d:\mydemodata")
'MYDEMODATA データベースから STUDENT テーブルを取得する
Dim students_table as DtoTable
Set students_table = dictionary.Tables("STUDENT")
'DEMODATA の Indexes コレクションを取得する
Dim students_idx as DtoIndexes
Set students_idx = students_table.Indexes
関連項目
メソッドの詳細
Add
コレクションに項目を追加します。
構文
result = Collection.Add(Object)
引数
戻り値
備考
このメソッドは DtoIndex タイプのパラメーターを使用します。このため、コレクションにオブジェクトを追加する前に、まずオブジェクトのインスタンスを作成してそのプロパティを設定する必要があります。
メモ: 既存の Zen テーブルにインデックスを追加する場合に、このメソッドを使用することはできません。このメソッドでは、データ ファイルおよび DDF ファイルを変更しません。テーブルを作成する前に、メモリ内でインデックスを追加する場合にのみ使用できます。参考として、
AddTable のコード例をご覧ください。
Remove
コレクションから項目を削除します。
構文
result = Collection.Remove(index)
引数
戻り値
備考
Remove メソッドには、項目の名前または 1 から始まる序数を渡すことができます。
メモ: 既存の Zen テーブルからインデックスを削除する場合に、このメソッドを使用することはできません。このメソッドでは、データ ファイルおよび DDF ファイルを変更しません。テーブルを作成する前に、メモリ内でインデックスを削除する場合にのみ使用できます。参考として、
AddTable のコード例をご覧ください。
Clear
DtoColumns または DtoIndexes コレクションからすべての項目を削除します。
構文
result = Collection.Clear
引数
戻り値
備考
このメソッドはメモリ内にあるテーブルからすべてのインデックスを削除します。
メモ: 既存の Zen テーブルからインデックスを削除する場合に、このメソッドを使用することはできません。このメソッドでは、データ ファイルおよび DDF ファイルを変更しません。テーブルを作成する前に、メモリ内ですべてのインデックスを削除する場合にのみ使用できます。参考として、
AddTable のコード例をご覧ください。
DtoIndex オブジェクト
このオブジェクトはテーブルのインデックスを表します。
プロパティ
コレクション
メソッド
なし
備考
1 つのインデックスに対し、119 個のセグメントが許可されます。1 つのインデックスのセグメントに含まれるすべての列を結合したサイズは、13.0 以前の形式のファイルの場合は 255 バイト、16.0 形式のファイルの場合は 1024 バイトより大きくすることはできないことに注意してください。
インデックス セグメントの中で最後の列のみが部分インデックス フラグを持つことができます。インデックスの最後のセグメントでないのに部分インデックス フラグを使用しているインデックス セグメントでは、部分フラグが無視されます。
例
'辞書をインスタンス化して開く
Dim dictionary as new DtoDictionary
Dim result as DtoResult
result = dictionary.Open("d:\mydemodata")
'MYDEMODATA データベースから STUDENT テーブルを取得する
Dim students_table as DtoTable
Set students_table = dictionary.Tables("STUDENT")
'DEMODATA の Indexes コレクションを取得する
Dim students_idx as DtoIndexes
Set students_idx = students_table.Indexes
'最初のインデックスを取得し、その名前を調べる
Dim first_idx as DtoIndex
Set first_idx = students_idx(1)
Dim index_name as String
index_name = first_idx.Name
関連項目
DtoSegments コレクション
インデックスのセグメントを表す DtoSegment オブジェクトのコレクションです。
プロパティ
メソッド
備考
Count プロパティを使用してコレクション内のメンバー数を調べます。
例
'辞書を開く
Dim dictionary as new DtoDictionary
Dim result as DtoResult
result = dictionary.Open("d:\mydemodata")
'Students テーブルを取得する
Dim students_table as DtoTable
Set students_table = dictionary.GetTable("Student")
'Students テーブルから Indexes コレクションを取得する
Dim students_idx as DtoIndexes
Set students_idx = students_table.Indexes
'すべてのインデックスを削除する
Dim first_idx as DtoIndex
Set first_idx = students_idx(1)
'最初のインデックスから DtoSegments コレクションを取得する
Dim my_segments as DtoSegments
Set my_segments as first_idx.Segments
関連項目
メソッドの詳細
Add
コレクションに項目を追加します。
構文
result = Collection.Add(Object)
引数
戻り値
備考
このメソッドは DtoSegment タイプのパラメーターを使用します。このため、コレクションにオブジェクトを追加する前に、まずオブジェクトのインスタンスを作成してそのプロパティを設定する必要があります。
メモ: 既存の Zen テーブルにセグメントを追加する場合に、このメソッドを使用することはできません。このメソッドでは、データ ファイルおよび DDF ファイルを変更しません。テーブルを作成する前に、メモリ内でセグメントを追加する場合にのみ使用できます。参考として、
AddTable のコード例をご覧ください。
Remove
コレクションから項目を削除します。
構文
result = Collection.Remove(segment)
引数
戻り値
備考
セグメントの 1 から始まる序数または名前を渡すことができます。
メモ: 既存の Zen テーブルからセグメントを削除する場合に、このメソッドを使用することはできません。このメソッドでは、データ ファイルおよび DDF ファイルを変更しません。テーブルを作成する前に、メモリ内でセグメントを削除する場合にのみ使用できます。参考として、
AddTable のコード例をご覧ください。
Clear
DtoSegments コレクションからすべての項目を削除します。
構文
result = Collection.Clear
引数
戻り値
備考
このメソッドはメモリ内にあるインデックスからすべてのセグメントを削除します。
メモ: 既存の Zen テーブルからセグメントを削除する場合に、このメソッドを使用することはできません。このメソッドでは、データ ファイルおよび DDF ファイルを変更しません。テーブルを作成する前に、メモリ内でセグメントを削除する場合にのみ使用できます。参考として、
AddTable のコード例をご覧ください。
DtoSegment オブジェクト
このオブジェクトはインデックス内のセグメントを表します。
プロパティ
メソッド
なし
備考
1 つまたは複数のセグメントでインデックスが構成されます。1 つのインデックスに対し、119 個のセグメントが許可されます。1 つのインデックスのセグメントに含まれるすべての列を結合したサイズは、13.0 以前の形式のファイルの場合は 255 バイト、16.0 形式のファイルの場合は 1024 バイトより大きくすることはできないことに注意してください。
例
'辞書を開く
Dim dictionary as new DtoDictionary
Dim result as DtoResult
result = dictionary.Open("d:\mydemodata")
'Students テーブルを取得する
Dim students_table as DtoTable
Set students_table = dictionary.GetTable("Student")
'Students テーブルから Indexes コレクションを取得する
Dim students_idx as DtoIndexes
Set students_idx = students_table.Indexes
'すべてのインデックスを削除する
Dim first_idx as DtoIndex
Set first_idx = students_idx(1)
'最初のインデックスから DtoSegments コレクションを取得する
Dim my_segments as DtoSegments
Set my_segments as first_idx.Segments
'最初のセグメントを取得し、列名を照会する
Dim first_seg as DtoSegment
Set first_seg = my_segments(1)
Dim colname as String
colname = first_seg.ColumnName
関連項目