Skip to main content

This is documentation for Caché & Ensemble. See the InterSystems IRIS version of this content.Opens in a new tab

For information on migrating to InterSystems IRISOpens in a new tab, see Why Migrate to InterSystems IRIS?

Caché ActiveX API リファレンス

Caché は、一連の ActiveX クラスを提供して Caché サーバ接続を管理し、Caché オブジェクトと対話します。これらのクラスは CacheActiveX.dll 内にあり、以下を含みます。

  • CacheActiveX.ObjInstance — このクラスの各インスタンスは、サーバ側 Caché オブジェクトをミラーするクライアント側プロキシ・オブジェクトです。クライアントのアプリケーションがアクセスする各サーバ側の Caché オブジェクトに対して、少なくとも 1 つの CacheActiveX.ObjInstance のクライアント側インスタンスが存在します。

  • CacheActiveX.Factory — このクラスのインスタンスを使用して、Caché サーバへの接続を確立し、Caché オブジェクトを作成および管理します。アプリケーションには、CacheActiveX.Factory クラスのインスタンスを 1 つだけ生成する必要があります。

  • CacheActiveX.SysList — このクラスのインスタンスを使用して、Caché の $List 形式でデータを作成し、操作します。

  • CacheActiveX.ResultSet — このクラスのインスタンスを使用して、クエリ (%Library.QueryOpens in a new tab のインスタンスである内部クラス・クエリまたは任意 SQL クエリ) を実行し、これらのクエリの結果を処理します。

  • CacheActiveX.BinaryStream — このクラスのインスタンスを使用して、Caché のバイナリ・ストリーム・データを作成し、操作します。

  • CacheActiveX.CharStream — このクラスのインスタンスを使用して、Caché の文字ストリーム・データを作成し、操作します。

Important:

Caché ActiveX オブジェクトでは、すべてのロケールに対して ActiveX の数値型の 3 桁ごとの区切り文字が正しくサポートされているわけではありません。例えば、以下の文 (イタリア語/ポルトガル語の区切り文字の規約を使用) では "." も "," も小数点記号として正しく扱われません。

   obj.MyCurrency = "123.457,99"  'Do not use!

Objinstance クラス

CacheActiveX.ObjInstance オブジェクトはサーバベースの Caché オブジェクトをクライアント側で表現したものです。クライアントのアプリケーションが使用する各サーバベースの Caché オブジェクトに対して、少なくとも 1 つの ObjInstance のインスタンスが存在します。

CacheActiveX.Factoryクラスの New()Open()、および OpenId() メソッドを使用して ObjInstance オブジェクトを作成します。ObjInstance オブジェクトがクライアントに作成されると、Caché サーバで対応する Caché オブジェクトが開かれ、作成されます。ObjInstance には、これらのオブジェクトがミラーする Caché オブジェクトのプロパティおよびメソッドが含まれます。

Factory Class (ファクトリ・クラス)

Caché CacheActiveX.Factoryクラスのインスタンスは、Caché サーバへの接続の作成と管理に使用します。また、Factory オブジェクトは、既存の Caché オブジェクトを開いたり、新規オブジェクトを作成したりすることにより、新しい ActiveX ObjInstance オブジェクトの作成を管理します。

Factory クラスは、以下のメソッドをサポートしています。

  • Connect : Caché に接続します。

  • ConnectDlg : 接続ダイアログ・ボックスを開き、ユーザ入力を基に接続文字列を作成します。

  • Disconnect : Caché から切断します。

  • DynamicSQL : ダイナミック SQL 文を準備し、実行用オブジェクトを作成します。

  • GetClassName : OID からクラス名を抽出します。

  • GetConnectionList : クライアント・マシンのレジストリから、使用可能な接続文字列のリストを返します。

  • GetErrorText : エラー・メッセージを解析します。

  • GetId : OID から ID を抽出します。

  • GetLastErrorCount : 最後のステータス・コードのエラー数を返します。

  • GetLastErrorNumber : 最後の ObjectScript エラーの数を返します。

  • GetLastErrorParam : 最後のエラーのパラメータ値を返します。

  • GetLastErrorParamCount : 最後のエラーのパラメータ数を返します。

  • IsConnected : 接続が確立されたかどうかを報告します。

  • IsMultibyte : Unicode 文字をサーバで特別に表現する必要があるかどうかを表します。

  • New : サーバに新しいオブジェクトを作成し、対応する ActiveX プロキシ・オブジェクトをクライアントに作成します。

  • Open : OID を使用して、サーバで既存のオブジェクトを開き、対応する ActiveX プロキシ・オブジェクトをクライアントで開きます。

  • OpenId : サーバで既存のオブジェクトを開き、対応する ActiveX プロキシ・オブジェクトをクライアントで開きます。

  • ResultSet: 定義済みのクエリを含む Caché ActiveX ResultSet オブジェクトを作成します。

  • SetOutput : コールバック機能を提供します。

  • Static : オブジェクトのクラス・メソッドを、対応するクライアント・オブジェクトを通じて、Caché サーバで実行します。

  • TransactionCommit : トランザクションの終了を表します。

  • TransactionLevel : 現在のトランザクション・レベルを決定します。

  • TransactionRollback : 現在のトランザクションを終了し、このトランザクションにより行われた変更を復元します。

  • TransactionStart : トランザクションの開始を表します。

Connect()

指定の Caché サーバ上の指定のネームスペースへの接続を作成します。

Boolean Connect(String connectstring)

connectstring 形式の詳細は、"接続文字列の定義" を参照してください。

パラメータ :
  • connectstring — 接続文字列。

これは、以下を返します。

接続の試行が成功した場合はブーリアン値の true、成功しなかった場合は false

例 :

"接続文字列の定義" を参照してください。

ConnectDlg()

接続管理ダイアログへのアクセスを提供します。

String ConnectDlg(String title)

このダイアログでは、接続の追加、編集、削除、または選択ができます。ユーザが接続を選択すると、このダイアログは、完全で適切にフォーマットされた接続文字列を返します。情報が不足していて、完全な接続文字列が作成できない場合は、選択は失敗し、ダイアログは開いたままになります。

ユーザがダイアログの項目にすべて記入すると、このメソッドは Connect() メソッドに渡すための接続文字列を返します。ユーザがダイアログをキャンセルすると、このメソッドは空文字列 ("") を返します。

パラメータ :
  • title — オプション。接続ダイアログ・ウィンドウのタイトルを指定できます。title が指定されていない場合、接続ダイアログ・ウィンドウには、既定のウィンドウ名が表示されます。また、title 文字列に続けて “+%up” を指定した場合、ユーザがダイアログで指定したユーザ名とパスワードが返されます。

これは、以下を返します。

文字列

例 :
Set factory = CreateObject("CacheActiveX.Factory")

' set a custom title for dialog and specify that the dialog
' will return the username and password in the connection string
Dim MyTitle As String
MyTitle = "Application Connection Dialog+%up"

' get the connection string from user input to the connection dialog
sdir = factory.ConnectDlg(MyTitle)

' check if it's not NULL; 
' if not NULL, use it to connect to the server
If sdir <> "" Then
    ok = factory.Connect(sdir)
    ' if the connection succeeds, put up a message box saying so
    MsgBox ok
Else
   ' if it's NULL, exit the program
   End
End If

Disconnect()

そのオブジェクトの Connect() メソッドで以前に作成された接続を切断します。

Boolean Disconnect()

このメソッドは常に成功し、true を返します。つまり、アプリケーションは、接続が切断されたときに、開いているオブジェクトが 1 つも残らないように、必要な準備処理を実行する必要があるということです。

これは、以下を返します。

ブーリアン値の true (false を返すことはありません)。

例 :
' Given an open object Person and an open ResultSet object res,
' these must be closed before the connection is closed:
Person.SYS_Close
Set Person = Nothing


res.Close
Set res = Nothing

' Close the Factory object's connection:
factory.disconnect

接続が切断されるようにするには、まず、各オブジェクトの参照カウントがゼロであることを確認します。これにより、参照の途切れを回避することができます。オブジェクトの参照カウントをゼロに設定するには、Caché クライアント・オブジェクトと対応するサーバ・オブジェクトの関連を断つ必要があります。すべてのオブジェクトに対してこの操作を行ったら、シャットダウンし、クライアント・プロキシに対するメモリの割り当てを取り消すことができます。

DynamicSQL()

動的に定義されたクエリを含む Caché ActiveX ResultSet オブジェクトを作成します。

CacheActiveX.ResultSet DynamicSQL(String SQLStmt)

(このメソッドによって作成される ResultSet オブジェクトの種類と、Factory クラスの ResultSet() メソッドによって作成される種類には違いはありません。)

クエリは、返された ResultSet オブジェクトの Execute() メソッド経由でデータベースに適用されます。その後、ResultSet オブジェクトで使用可能なさまざまなメソッドを使用して、データを取得することができます。(SQL 文を使った場合などに問題がある場合は、DynamicSQL() により、Visual Basic エラーが返されます)。

パラメータ :
  • SQLStmt — 実行時にクライアントで生成された SQL 文。

これは、以下を返します。

ResultSet オブジェクト。

例 :
' declare and create Factory object, declare the ResultSet object
Dim factory As CacheActiveX.factory
Set factory = CreateObject("CacheActiveX.Factory")

' Code here connects to the server; once the connection is
' established, work with the query can proceed.

Dim res As CacheActiveX.ResultSet

' declare variable to hold query string and put the query in it
Dim MyQuery As String
MyQuery = "SELECT %ID,Name,Colors,MyDate " _
        & "FROM Person " _ 
        & "WHERE (Name %STARTSWITH ?) " _ 
        & "ORDER BY Name"

' create the ResultSet using DynamicSQL()
Set res = factory.DynamicSQL(MyQuery)

' you can now set parameters, execute, and so on 
Call res.SetParam(1, "F")
res.Execute

GetClassName()

指定された OID からクラス名を抽出します。

String GetClassName(String OID)
パラメータ :
  • OID — 目的のクラスの OID。

これは、以下を返します。

文字列

例 :
Dim MyClassName As String
MyClassName = factory.GetClassName(OID)

GetConnectionList()

接続文字列のリストを返します。

String GetConnectionList()

このリストは、HKEY_LOCAL_MACHINE_ISC_SERVERS キーにあるクライアント・マシンのレジストリから取得されます。

Note:

このメソッドの接続文字列には、他のメソッドのものとは異なり、ネームスペースは含まれません。

これは、以下を返します。

以下の形式の接続名と文字列のセミコロン区切りリストを含む文字列。

ConnectionName1,Connection1;ConnectionName2,Connection2;...

各接続の形式は以下のとおりです。

cn_iptcp:ip_address[port]
以下はその例です。
Private m_factory As CacheActiveX.Factory

Set m_factory = CreateObject("CacheActiveX.Factory")
Debug.Print m_factory.GetConnectionList

結果として得られる文字列は、次のようになります。

LOCALTCP,cn_iptcp:127.0.0.1[1972]:;otherServer,cn_iptcp:123.123.123.123[1972]:

GetErrorText()

Caché オブジェクトのエラー番号を取得し、生成されたエラーに対してロケールに依存したテキストを返します。

String GetErrorText(int ErrorNumber [, Param1, ..., Param10])

必要に応じて、エラー・メッセージに含めるために 1 つ以上のパラメータを渡すことができます。返り値は、クライアントのロケールの言語で表示されます。

パラメータ :
  • ErrorNumber — サーバから返された Caché エラー。

  • ParamN — 個々の ParamN 引数は、エラー・メッセージのテキストに提供される置換値を指定します。

これは、以下を返します。

文字列

例 :
' Caché was unable to save the class.
' The returned error is encapsulated by the error object, 
'    #5659: "Property '%1' required"
msg = factory.GetErrorText(5659,"Name")
' msg now contains the string "Property 'Name' required"

GetId()

OID を指定されたオブジェクトの ID を返します。

String GetId(String OID)

パラメータ :
  • OID — オブジェクトのクラス名と永続 ID を含む文字列。

これは、以下を返します。

文字列

例 :
Dim ID As String
ID = factory.GetId(OID)

GetLastErrorCount()

最後の (一番最後に発生した) ステータス・コードに含まれるエラーの数を取得します。

Integer GetLastErrorCount()
Note:

最後のエラーは、1 オブジェクトあたりではなく、1 プロセスあたりです。

これは、以下を返します。

整数

例 :
Dim ErrCnt As Integer
ErrCnt = factory.GetLastErrorCount()

GetLastErrorNumber()

最後の (一番最後に発生した) ObjectScript エラーの番号を取得します。

Long GetLastErrorNumber(String ErrNumber)
Note:

最後のエラーは、1 オブジェクトあたりではなく、1 プロセスあたりです。

パラメータ :
  • ErrNumber — オプションで渡すステータス・コードのエラー位置 (既定値は 1)。

これは、以下を返します。

1 以上 GetLastErrorCount() 以下の長整数値。

以下はその例です。
Dim ErrNum As Long
ErrNum = factory.GetLastErrorNumber()

GetLastErrorParam()

最後の (一番最後に発生した) エラーのパラメータ番号の値を返します。

String GetLastErrorParam([String ErrNumber[, String ParamNumber]])
Note:

最後のエラーは、1 オブジェクトあたりではなく、1 プロセスあたりです。

パラメータ :
  • ErrNumber — オプションで渡すステータス・コードのエラー位置 (既定値は 1)。

  • ParamNumber — オプションで渡すこのエラーのパラメータ番号 (既定値は 1)。

これは、以下を返します。

文字列

例 :
Dim ErrParam As String
ErrParam = factory.GetLastErrorParam()

あるいは

Dim ErrParam As String
ErrParam = factory.GetLastErrorParam(errno)

あるいは

Dim ErrParam As String
ErrParam = factory.GetLastErrorParam(errno, paramno)

したがって、以下の 2 つの呼び出しはすべて同一です。

Dim ErrParam As String
ErrParam = factory.GetLastErrorParam()
ErrParam = factory.GetLastErrorParam(1)
ErrParam = factory.GetLastErrorParam(1,1)

GetLastErrorParamCount()

最後の (一番最後に発生した) エラーのパラメータの数を返します。

Integer GetLastErrorParamCount([String ErrNumber])

Note:

最後のエラーは、1 オブジェクトあたりではなく、1 プロセスあたりです。

パラメータ :
  • ErrNumber — オプションで渡すステータス・コードのエラー位置 (既定値は 1)。

これは、以下を返します。

整数

例 :
Dim ParamCount As Integer
ParamCount = factory.GetLastErrorParamCount()

あるいは

Dim ParamCount As Integer
ParamCount = factory.GetLastErrorParamCount(errno)

IsConnected()

接続が確立された場合、true を返します。

Boolean IsConnected()

このメソッドの返り値は、一番最後に行われた接続操作が成功したかどうかを表します。

Important:

接続が確立された後、何らかの環境的な影響で切断されても、この関数は true を返す可能性があります。これは接続がもはや存在しなくても、最後の操作は成功したために生じます(このメソッドは、接続が依然として存在するかどうかを判断しようと、いくつか基本的な試行を行いますが、この試行は成功しない可能性があります)。

これは、以下を返します。

接続が確立した場合はブーリアン値の true、確立しなかった場合は false

例 :
If Not factory.IsConnected()
' Establish connection
End If

IsMultibyte()

Unicode 文字をサーバで特別に表現する必要があるかどうかを表します。

Boolean IsMultibyte()

値が true の場合、Unicode 文字は、ASCII 文字の “エスケープ” シーケンスとして格納されます。 false の場合、文字のネイティブ表現に Unicode が使用されることを意味します。したがって、このメソッドは、Caché サーバが Unicode インストールの場合は false を、そうでない場合は true を返します。

このメソッドは、SysList オブジェクトで Unicode 値を適切に管理するために使用します。

これは、以下を返します。

Unicode 文字をサーバで特別に表現する必要がある場合はブーリアン値の true、必要がない場合は false

例 :
Dim im as Boolean
im = factory.IsMultibyte()

New()

サーバに新しいオブジェクトを作成し、対応する ActiveX プロキシ・オブジェクトをクライアントに作成します。

Object New(String ClassName[, Variant init]) 

呼び出しが成功すると、New() メソッドは指定されたクラスの新しい ObjInstance プロキシ・オブジェクトを返し、サーバ上に対応する新しい Caché オブジェクトを作成します。オブジェクトを使用できるようにするために、Caché クライアント・アプリケーションでは、開いている Caché オブジェクトの型にオブジェクトをキャストする必要があります。これにより、アプリケーションが、オブジェクトの Caché 機能を使用できるようになります。

パラメータ :
  • ClassName — Caché サーバで定義された有効なクラスの名前。

  • init — 新しいオブジェクトの初期化に使用するオプションの値。

これは、以下を返します。

ObjInstance オブジェクト

例 :
Dim obj as Object
Set obj = factory.New(ClassName)

Open()

オブジェクト識別子 (OID) を使用して、Caché サーバで開いているオブジェクトからのデータを持つ新しい ObjInstance プロキシ・オブジェクトを作成します。

Object Open(String ClassName, String OID, [[Int concurrency], Int noreuse])
Note:

このメソッドは、主に、インターシステムズの内部で使用するためのものです。

パラメータ :
  • ClassName — Caché サーバで定義されたクラス。

  • OID — OID 値。

  • concurrency — オプション。このオブジェクトで許可された並行利用のレベルを設定します。

  • noreuse — オプション。メモリ内のあるオブジェクトが複数回参照できるかどうかを制御します。これはサーバ側の ObjectScript 構文 ##class(ClassName).%Open(oid) に対応します。

これは、以下を返します。

Caché サーバで開いているオブジェクトからのデータを持つ新しい ObjInstance プロキシ・オブジェクト。

例 :
Dim obj as Object
Set obj = factory.Open(ClassName,oid)

OpenId()

Caché サーバで開いているオブジェクトからのデータを持つ新しい ObjInstance プロキシ・オブジェクトを作成します。

Object OpenId(String ClassName, String id, [[Int concurrency], Int noreuse])

パラメータ :
  • ClassName — Caché サーバで定義されたクラス。

  • id — 有効な OID と関連付けられた ID。

  • concurrency — オプション。このオブジェクトで許可された並行利用のレベルを設定します。

  • noreuse — オプション。メモリ内のあるオブジェクトが複数回参照できるかどうかを制御します。

これは、以下を返します。

Caché サーバで開いているオブジェクトからのデータを持つ新しい ObjInstance プロキシ・オブジェクト。

例 :
Dim obj as Object
Set obj = factory.OpenId(ClassName,id)

ResultSet()

あらかじめ定義されたクエリを含む Caché ActiveX ResultSet オブジェクトを作成します。

Object ResultSet(String ClassName, String QueryName)

このメソッドによって作成される ResultSet オブジェクトの種類と、Factory クラスの DynamicSQL メソッドによって作成される種類には違いはありません。

クエリは、返された ResultSet オブジェクトの Execute() メソッド経由でデータベースに適用されます。その後、ResultSet オブジェクトで使用可能なさまざまなメソッドを使用して、データを取得することができます。

パラメータ :
  • classname — クエリが含まれるクラスの名前。

  • QueryName — 使用するクラス・クエリの名前。

これは、以下を返します。

ResultSet オブジェクト。

例 :
Dim res As CacheActiveX.ResultSet
Set res = factory.ResultSet("Person","ByName")

Dim ok As Boolean
ok = res.Execute("L")  ' pass in any arguments expected by the query
while res.Next()
  Debug.Print res.Get("Name")
wend

SetOutput()

(ObjectScript コードの Write コマンドにより生成された) サーバの出力を、クライアント・アプリケーションの一部であるコントロールに送ることができます。

Sub SetOutput(Variant DisplayControl)

サーバからの出力を受け取るコントロールには、出力を表示するためのテキスト・プロパティが必要です。

このコンテンツは、単一の Write コマンドから生成されたものでなければなりません。その後、Write を実行するたびに、その直前の実行により表示されたコンテンツが上書きされます。同様に、複数の入力が存在する場合、これらを 1 つの入力単位に連結したものを Write に渡す必要があります (最終的に出力を表示するオブジェクト以外のテキスト・オブジェクトに出力を渡し、そこで連結してから、転送して表示することもできます)。

パラメータ :
  • DisplayControl — 出力または空文字列を受け取るコントロール。

以下はその例です。
Set factory = CreateObject("CacheActiveX.Factory")
factory.SetOutput Text1
' System output now goes to textbox Text1

出力機能を無効にするには、空の文字列で SetOutput() を呼び出します。

factory.SetOutput ""

Static()

Caché サーバでクラス・メソッドの呼び出しを許可する静的な ActiveX オブジェクトを返します。

Object Static(ClassName As String)

対応するオブジェクトはサーバで開いていないので、この ActiveX オブジェクトからインスタンスやプロパティ・メソッドを実行することはできません。

パラメータ :
  • ClassName — 返されるオブジェクトのクラス名。

これは、以下を返します。

静的な ActiveX オブジェクト。

例 :
' invoke a class method;
' put the content in a textbox called txtInfoBox
Dim MyObj As Object
Set MyObj = factory.Static("Cinema.Utils")

' the Cinema.Utils.SendEmail ClassMethod returns a string, 
' which then appears in the textbox
txtInfoBox.Text = MyObj.SendEmail(Addr,Msg)

TransactionCommit()

対応する TransactionStart() メソッドによって開始されたトランザクションの正常終了を表します。

Sub TransactionCommit()

TransactionCommit() は、ObjectScript TCommit コマンドに相当します。トランザクションに関する詳細は、リファレンスの "TStart" を参照してください。

TransactionCommit()$TLEVEL 特殊変数の値をデクリメントし、$TLEVEL が 0 に達した場合のみ、トランザクションを終了させます。つまり、TransactionCommit()TransactionStart() と同じ回数呼び出されるときに、トランザクションは終了するということです。$TLEVEL が 0 のときに TransactionCommit() を呼び出すと、ObjectScript <COMMAND> エラーが返されます。

以下はその例です。
factory.TransactionCommit()

TransactionLevel()

トランザクション処理に対する、現在の入れ子レベルを返します。

Integer TransactionLevel()

入れ子レベルは、Caché が TransactionCommit()TransactionRollBack() を検出する前に実行された TransactionStart() 呼び出しの回数により決定されます。各 TransactionStart() コマンドは、特殊変数 $TLEVEL を 1 つインクリメントします。各 TransactionCommit() コマンドは、$TLEVEL を 1 つデクリメントします。TransactionRollBack() コマンドは、$TLEVEL を 0 にリセットします。

これは、以下を返します。

整数

例 :
Dim lvl as Integer
set lvl=factory.TransactionLevel()

TransactionRollBack()

現在のトランザクションを終了し、ジャーナルされたすべてのデータベース値を、トランザクションの開始時に保持されていた値に復元します。

Sub TransactionRollBack()

以下はその例です。
factory.TransactionRollBack()

TransactionStart()

トランザクションの開始を表します。

Sub TransactionStart()

TransactionStart() に従って、データベース・オペレーションがジャーナルされ、それに続く TransactionCommit()TransactionRollBack() コマンドが実行可能になります。

TransactionStart() は、ObjectScript TStart コマンドに相当します。トランザクションに関する詳細は、リファレンスの "TStart" を参照してください。

$TLEVEL 特殊変数の数値にかかわらず、ロールバックは実行されます。TransactionRollBack() に従って、$TLEVEL が 0 に設定されます。$TLEVEL が 0 の時に TransactionRollBack() を呼び出しても、何の影響もありません。

TransactionRollBack() は、ObjectScript TRollBack コマンドに相当します。トランザクションに関する詳細は、リファレンスの "TStart" を参照してください。

例 :
factory.TransactionStart()

ResultSet Class (ResultSet クラス)

Caché には、定義済みのクエリと、動的に定義されるクエリの両方を実行できるインタフェースが用意されています。このインタフェースに ActiveX クライアントからアクセスするには、ActiveX ResultSet オブジェクトを使用します。ResultSet オブジェクトを使用して、クエリの設定、実行、およびクエリ結果の解析をすることができます。

ActiveX クライアントの一部として、ResultSet オブジェクトは単独で存在します。Caché サーバでは、オブジェクトやプロパティがクラス・メンバであるのと同様に、ResultSet もクラス・メンバです。個々の Activex ResultSet オブジェクトは、動的に定義された、または特定の Caché クラスで定義された特定のクエリに関連付けられています。

Caché ResultSet オブジェクトは、以下のメンバをサポートしています。

  • CloseResultSet オブジェクトの実行後、このオブジェクトを閉じます。

  • ContainsID : クエリに ID が含まれているかどうかを判断します。

  • ExecuteResultSet オブジェクトが参照しているクエリを実行します。

  • Get : 列名で指定された列のデータ値を返します。

  • GetColumnCountResultSet オブジェクト内の列数を返します。

  • GetColumnHeader : 指定された位置にある列の説明を返します。

  • GetColumnName : 指定された列の名前を返します。

  • GetData : 指定された列のデータ値を返します。

  • GetDataAsString : 指定された列の値を文字列形式で返します。

  • GetDataByName : 列名で指定された列のデータ値を返します。

  • GetParamCount : クエリで使用可能なパラメータの数を返します。

  • GetParamName : 指定されたパラメータの名前を返します。

  • IsDataNull : 指定された列が既に定義されているかどうかを判断します。

  • Next : 次のデータ行に進みます。

  • Prepare : クラス・クエリではなく、ダイナミック SQL クエリを使用するよう指定します。

  • SetParam : クエリが要求する入力パラメータの値を設定します。

  • SetRunTimeMode : クエリの実行時モードを設定します。

Important:

CacheActiveX.dll の既定の SQL 実行時モードは、ODBC です。アプリケーションが古い CacheObject.dll を使用する場合、実行時モードは Logical になります ("CacheObject.dll からのアップグレード" および "SetRunTimeMode()" メソッドを参照してください)。

Close()

結果セットを作成したクエリの実行後、この結果セットを閉じます。

Boolean Close()

このメソッドにより、結果セットのメモリが解放されることはありません。1 つの文を繰り返し実行する必要がある場合、Execute() メソッドに対する呼び出しと呼び出しの間で ResultSet オブジェクトを閉じ、呼び出しのシーケンスを次のようにする必要があります。

Prepare 'prior to the first Execute call
Execute
Close
Execute
Close
これは、以下を返します。

結果セットが正常に閉じられた場合はブーリアン値の true、正常に閉じられなかった場合は false

例 :
res.Close
' res no longer contains the data returned by the query.
' If the ResultSet object is no longer to be used, 
' its memory can be freed with:
Set res = Nothing

ContainsID()

現在のクエリが ID を返すかどうか、また ID が返される場合は、それがどの列に含まれるかを判断します。

Integer ContainsID()

このメソッドは ID 列の番号を返します。ResultSet に ID 列が含まれていない場合は 0 が返されます。これは、列番号が 1 から始まるためで、0 以外の値は、必ず列番号です。定義済みのクエリで ID 列に情報を保持する方法に関する詳細は、"Caché オブジェクトの使用法" の "CONTAINID パラメータ" を参照してください。

Note:

ID を含む列の値として、存在しない列、または間違った列を手動で指定できます。この場合、このメソッドは、その値を取得します。

これは、以下を返します。

整数

例 :
' This puts a message up saying whether or not
' the query contains an ID field.
MsgBox "ContainsID = " & res.ContainsID

Execute()

ResultSet オブジェクトで定義されたクエリを実行します。このメソッドは、指定された引数をすべて、クエリに渡します。

Boolean Execute([param0, param1, ... , paramN])
パラメータ :
  • param1,...,paramN — 最高 16 個のオプション・パラメータを指定できます。これらは、指定された順序でサーバのクエリに渡されます。これらのパラメータは param0 (ゼロ) から param15 で表されます。

これは、以下を返します。

クエリの実行が成功した場合はブーリアン値の true、成功しなかった場合は false

例 :
' First, declare and prepare the query.
Dim res As CacheActiveX.ResultSet
Set res = factory.ResultSet("Person","ByName")

' Now run the ByName query. This query returns all 
' people whose names begin with the letter specified.
res.Execute("A")

Get()

ResultSet の現在の行にある列に格納されたデータの値を返します。ここで、目的の列は列の名前で指定します。

Variant Get(String ColumnName)

場合によっては、Get() メソッドを使用する必要がありますが、列名ではなく列番号を使用する GetData() メソッドの方が処理が高速です。

Note:

これは GetDataByName() と同等のメソッドで、 の代わりに使用されます。

パラメータ :
  • ColumnNameResultSet にある列の名前。

これは、以下を返します。

データの値を含む Variant。

例 :
' Declare, prepare, and run the query.
Dim res As CacheActiveX.ResultSet
Set res = factory.ResultSet("Person","ByName")
res.Execute("A")

While res.Next()
  ' places all the matching names in a listbox
  lstMyList.AddItem res.Get("Name")
Wend

GetColumnCount()

結果セット内の列数を返します。

Integer GetColumnCount()
これは、以下を返します。

結果セット内の列数を示す整数。

例 :
' Declare, prepare, and run the query.
Dim res As CacheActiveX.ResultSet
Set res = factory.ResultSet("Person","ByName")
res.Execute("A")

' Get the number of columns in the result set.
For i = 1 To res.GetColumnCount
    ' For each column, display its name in a listbox.
    lstColumns.AddItem res.GetColumnName(i)
Next

GetColumnHeader()

定義済みのクエリで指定された行に含まれるデータの説明を返します。

String GetColumnHeader(Integer ColumnNumber)
Note:
CacheActiveX では実装されていません

このメソッドは、古い CacheObject.dll (“CacheObject.dll からのアップグレード” を参照) にのみ実装されています。CacheActiveX.dll には実装されていません。CacheActiveX は常に列 (プロパティ) 名を返し、ROWSPEC optionalDescription で列に対して定義されたものを無視します。例えば、クラス・クエリに

"prop1:%String:MyHeader,prop2,prop3" のような新しい列見出しを定義する ROWSPEC がある場合、

CacheActiveX は "MyHeader" の代わりに "prop1" を返します。

説明が存在しない場合 (動的に定義されたクエリの場合は、説明は一切存在しません)、GetColumnHeader() は、指定された列の名前を返します。定義済みのクエリの列ヘッダの設定に関する詳細は、"Caché オブジェクトの使用法" のクエリに関する章の "ROWSPEC パラメータ" を参照してください。

パラメータ :
  • ColumnNumberResultSet におけるデータの位置を番号で指定します。列番号は 1 から始まります。

これは、以下を返します。

データの説明を含む文字列。

例 :

警告 :この例は、古い CacheObject.dll (上記のメモを参照) を使用している場合のみ機能します。

' Declare, prepare, and run the query.
Dim res As CacheObject.ResultSet
Set res = factory.ResultSet("Person","ByName")
res.Execute("A")

' Get the number of columns in the result set.
For i = 1 To res.GetColumnCount
    ' For each column, display its name and header
    ' in a listbox as "Name - Header".
    lstColumns.AddItem res.GetColumnName(i) & " - " & res.GetColumnHeader(i)
Next

GetColumnName()

指定された列に関連付けられた識別子を返します。

String GetColumnName(Integer ColumnNumber)

このメソッドの動作は、ResultSet オブジェクトが、Factory.ResultSet() を使用して、定義済みのクエリから生成されたものか、Factory.DynamicSQL() を使用して、動的に生成されたクエリから生成されたものであるかによって異なります。定義済みのクエリの場合、列に格納されたプロパティの名前が返されます。動的に定義されたクエリの場合、列に格納されたプロパティの名前、またはクエリの SELECT 文の AS 節でプロパティのエイリアスが定義されていれば、そのエイリアスが返されます。

パラメータ :
  • ColumnNumberResultSet におけるデータの位置を番号で指定します。列番号は 1 から始まります。

これは、以下を返します。

文字列

例 :
' Declare, prepare, and run the query.
Dim res As CacheActiveX.ResultSet
Set res = factory.ResultSet("Person","ByName")
res.Execute("A")

' Get the number of columns in the result set.
For i = 1 To res.GetColumnCount
    ' For each column, display its name in a listbox.
    lstColumns.AddItem res.GetColumnName(i)
Next

GetData()

ResultSet の現在の行から、列番号で指定された列に格納されたデータの値を返します。

Variant GetData(Integer ColumnNumber)
パラメータ :
  • ColumnNumberResultSet におけるデータの位置を番号で指定します。列番号は 1 から始まります。

これは、以下を返します。

データの値を含む Variant。

例 :
' Declare, prepare, and run the query.
Dim res As CacheActiveX.ResultSet
Set res = factory.ResultSet("Person","ByName")
res.Execute("A")

' Retrieve the data from the specified column
While res.Next
    lstMyList.AddItem res.GetData(4)
Wend

GetDataAsString()

ResultSet の現在の行から、名前で指定された列に格納されたデータの値を文字列に変換して返します。

String GetDataAsString(Integer ColumnNumber)

これは GetData() メソッドに似ていますが、データ型の変換を行う点が異なります。

パラメータ :
  • ColumnNumberResultSet におけるデータの位置を番号で指定します。列番号は 1 から始まります。

これは、以下を返します。

文字列

例 :
' Declare, prepare, and run the query.
Dim res As CacheActiveX.ResultSet
Set res = factory.ResultSet("Person","ByName")
res.Execute("A")

' Retrieve the data from the specified column
While res.Next
    lstMyList.AddItem res.GetDataAsString(4)
Wend

GetDataByName()

Note:

現在は GetDataByName() メソッドの代わりに、Get() メソッドが使用されています。

ResultSet の現在の行にある列に格納されたデータの値を返します。ここで、目的の列は列の名前で指定します。

Variant GetDataByName(String ColumnName)

場合によっては、GetDataByName() メソッド (または Get()) を使用する必要がありますが、列名ではなく列番号を使用する GetData() メソッドの方が処理が高速です。

パラメータ :
  • ColumnName — 列名。

これは、以下を返します。

データの値を含む Variant。

例 :
' Declare, prepare, and run the query.
Dim res As CacheActiveX.ResultSet
Set res = factory.ResultSet("Person","ByName")
res.Execute("A")

' Retrieve the data from the specified column
While res.Next
    lstMyList.AddItem res.GetDataByName("Name")
Wend

GetParamCount()

指定されたクエリが取る引数の個数の最大値を返します。

Integer GetParamCount()

これは、以下を返します。

整数

例 :
' Declare and prepare the query.
Dim res As CacheActiveX.ResultSet
Set res = factory.ResultSet("Person","ByName")

' Find out how many parameters the query uses and display it in a textbox.
txtParamCount.Text = res.GetParamCount

GetParamName()

指定された引数の名前を返します。

String GetParamName(Integer ParamNumber)

例えば、最初の引数の名前を調べるには、GetParamName() への引数として 1 を渡します。

パラメータ :
  • ParamNumber — 返されるパラメータの番号。

これは、以下を返します。

文字列

例 :
' Declare and prepare the query.
Dim res As CacheActiveX.ResultSet
Set res = factory.ResultSet("Person","ByName")

' Display each query parameter in a listbox.
For i = 1 To res.GetParamCount
    lstParams.AddItem res.GetParamName(i)
Next

IsDataNull()

ResultSet の現在の行に含まれる特定の列に SQL NULL 値が含まれるかどうかをチェックします。

Boolean IsDataNull(Integer ColumnNumber)
パラメータ :
  • ColumnNumberResultSet におけるデータの位置を番号で指定します。列番号は 1 から始まります。

これは、以下を返します。

以下の場合、ブーリアン値の true

  • 列にデータがない場合。つまり、列が存在しないか、または列に含まれるデータが (Set person.DOB="" のように、サーバ上の ObjectScript コードで指定された) 空の文字列です。

  • この列のデータが $c(0) で、データ型が String ではない場合。

例 :
' Declare, prepare, and run the query.
Dim res As CacheActiveX.ResultSet
Set res = factory.ResultSet("Person","ByName")
res.Execute("A")

' Check if each row of the ResultSet has NULL value in column 4.
While res.Next
    lstMyList.AddItem res.IsDataNull(4)
Wend

Next()

ResultSet カーソルを次のデータ行に進めます。

Boolean Next()

Get()GetData() を呼び出す前に、Next() を呼び出して、データの先頭行に移動する必要があります。

これは、以下を返します。

カーソルの移動に成功し、移動後に現在の行となった行にデータが存在する場合、ブーリアン値の trueが返されます。これ以上、データが存在しない場合は false が返されます。

例 :
' Declare, prepare, and run the query.
Dim res As CacheActiveX.ResultSet
Set res = factory.ResultSet("Person","ByName")
res.Execute("A")

' Iterate through the ResultSet.
While res.Next
    ' All data processing occurs here; 
    ' see Get, all GetData..., and IsDataNull methods for examples.
Wend

Prepare()

クラス・クエリを指定する代わりに、ダイナミック SQL 文 (複数可) をクエリとして使用するように指定します。

このメソッドではステータスが返されます。このステータスは、処理を続行する前に確認する必要があります。

これらのクエリには、? 文字を使用したパラメータを含めることができます。すべてのパラメータの値は、Execute() メソッドによって入力されます。

SetParam()

クエリの入力パラメータの値を設定します。

Sub SetParam(Integer Index, Variant Value)
パラメータ :
  • Index — パラメータ・リストにおけるパラメータの位置を表します。パラメータのインデックス番号は 1 から始まります。

  • Value — このパラメータについて、クエリに渡す値です。

以下はその例です。
' Declare and prepare the query.
Dim res As CacheActiveX.ResultSet
Set res = factory.ResultSet("Person","ByName")

Call res.SetParam(1, "F")

' Run the query, since it already has the necessary parameter(s).
res.Execute

SetRunTimeMode()

実行するクエリの SQL 実行時モードを設定します。

Sub SetRunTimeMode(Integer mode)

このメソッドは、文字列の変換方法に影響を与えるので、通常は、同じく ResultSet クラスのメソッドである GetDataAsString() と共に使用します。

各種モードに関する詳細は、"Caché オブジェクトの使用法" の "データ形式と変換メソッド" を参照してください。

パラメータ :
  • mode — 次のように、使用可能なモードのいずれかを表す整数。

    • 0 : LOGICAL モード

    • 1 : ODBC モード (システムのデータ型の LogicalToODBC() メソッドに似ています)

    • 2 : DISPLAY モード (システムのデータ型の LogicalToDisplay() メソッドに似ています)

以下はその例です。
' Declare, prepare, and run the query.
Dim res As CacheActiveX.ResultSet
Set res = factory.ResultSet("Person","ByName")
res.Execute("A")

' Iterate through the ResultSet.
While res.Next
    res.SetRunTimeMode 0
    
    ' processing based on having data in logical mode
Wend

SysList Class (SysList クラス)

Caché SysList オブジェクトを使用して、Visual Basic から Caché リスト ($List 形式) を解析し、操作することができます。また、Caché サーバからは独立して、この形式でリストを作成して操作するために、これらのオブジェクトを使用することも可能です。SysList の使用例は、“Visual Basic でのリストの使用法” を参照してください。

リストは整列した情報のコレクションです。各リスト要素は、リスト内のその位置 (スロット) によって識別されます。スロットのデータ値を設定したり、スロットにデータを挿入することができます。スロットに新規の値を設定する場合、その値はリスト内に保存されます。既存のスロットに値を設定する場合、新規データは前のデータを上書きし、スロットの割り当てを変更しません。既存のスロットにデータを挿入する場合、新しいリスト項目により、それ以降のすべてのスロットのスロット番号がインクリメントされます (2 番目のスロットに新しい項目を挿入すると、現在、2 番目のスロットに入っているデータは 3 番目のスロットに、3 番目のデータは 4 番目のスロットにというようにスライドされます)。

SysList オブジェクトは、%List データ型のインスタンスです。このオブジェクトでは、リスト内の個別の項目を操作できます。このリストは、個別の項目や、リストである項目を保持できます。ObjectScript では、$LIST$LISTBUILD$LISTDATA$LISTFIND$LISTGET$LISTLENGTH などの関数を使用して、$List オブジェクトを操作することができます。

SysList オブジェクトの一部の機能は、8 ビット・サーバと関連付けられているか、または Unicode Caché サーバと関連付けられているかによって異なります。詳細は、"IsMultibyte" プロパティのセクションと、Add プロパティのセクションの "Unicode 値を追加する" を参照してください。

Caché SysList オブジェクトは、以下のプロパティをサポートしています。

  • Count プロパティ : リスト内のスロット数を含みます (項目が個別要素であるか、それ自体がリストであるかは関係ありません)。

  • IsMultibyte プロパティ : サーバが 8 ビットであるか、Unicode であるかを表す情報を含みます。

  • Item プロパティ : リスト内の個別の項目 (リストではない項目) を含みます。

  • ItemList プロパティ : オブジェクトへのポインタとして、リスト内にリスト項目を含みます。

Caché SysList オブジェクトは、以下のメソッドをサポートしています。

  • Add : リストの末尾に項目を追加します。

  • Clear : リストを空にします。

  • GetSysList 形式から変換された Caché $List オブジェクトを含む文字列を返します。

  • Remove : リストから要素を削除し、残りのリスト項目を統合します。

  • Set : Caché $List オブジェクト (文字列にシリアル化されたもの) を SysList オブジェクトに変換します。

Count プロパティ

リストの長さ (つまり、リストに含まれる要素の数) を返します。

Count As Long

これには以下が含まれます。

  • 単一の項目を含む要素。

  • 空の要素。次のような ObjectScript サーバ・コードを使用して定義することにより、リストに空のスロットを含めることができます。

     Set MyList = $ListBuild("Value1",,"Value2")

    これにより、2 番目の要素に NULL 値が作成されます。

  • それ自体がリストである項目を含む要素。

読み取り :

リストにある要素の数。

Note:

このプロパティは読み取り専用なので、このプロパティに値を設定しようとするとエラーになります。

例 :
Dim Cars as CacheActiveX.SysList
Set Cars = salesman.CarsInLot()

Dim count as Integer
count = Cars.Count
' count contains the number of cars in Cars.

IsMultibyte プロパティ

Unicode 文字をサーバで特別に表現する必要があるかどうかを表します。

IsMultibyte As Boolean
読み取り :

値が true の場合、Unicode 文字は、ASCII 文字の “エスケープ” シーケンスとして格納されます。 false の場合、文字のネイティブ表現に Unicode が使用されることを意味します。

このプロパティの既定値は、false です。一般に、アプリケーションは、下の例にあるように、Factory オブジェクトの IsMultibyte メソッドにより返される値を使用して、このプロパティの値を設定します。

例 :
myList.IsMultibyte = factory.IsMultibyte()

オブジェクトの作成方法によっては、このオブジェクトと 8 ビット・システムが互換性を持つかどうかが分からないこともあります。例えば、次の場合、MyObj とは何であるかが分かるので、現在の環境で適切にこのオブジェクトを扱うことができます。

Dim MyObj as CacheActiveX.SysList
Set MyObj = Obj.A

次の場合は、MyObj とは何かが分からないので、IsMultibyte() メソッドを使用して、現在の環境でこのオブジェクトを適切に扱う方法を判断する必要があります。

Dim MyObj as CacheActiveX.SysList
Set MyObj = Create obj("CacheActiveX.SysList")

Item プロパティ

リスト内の各項目の値を表示または設定できます。

Property Item(Index As Integer)

読み取り/書き込み :

整数

このプロパティを使って、次のように、リストをアンパックすることができます。

' MyList is a SysList object with 2 items
Dim Item1 as String
Dim Item2 as String

Item1 = MyList.Item(1)
Item2 = MyList.Item(2)

また、新しい SysList オブジェクトの作成や、既存のオブジェクトの変更のために使うこともできます。

' Create a new list, Colors
Dim Colors as CacheActiveX.SysList

Set Colors = CreateObject("CacheActiveX.SysList")
Colors.Item(1) = "Red"
Colors.Item(2) = "Blue"
Colors.Item(3) = "Green"

' The first argument of the AddColors method is defined
' to have a %List data type
person.AddColors(Colors)

Note:

Delphi ユーザは、括弧ではなく角括弧を使用して項目のインデックスを指定する必要があります (x.Item(1) ではなく x.Item[1])。

ItemList プロパティ

それ自体が SysList オブジェクトとなるリストで、任意の項目の値を表示または設定できます。

Property ItemList(Index As Integer) As CacheActiveX.SysList
Note:

リスト項目の値を見ただけで、それ自体がリストであるかどうかを判断する方法はありません。何らかのメカニズムを使って、情報を得る必要があります。

読み取り/書き込み :

整数

例 :

リストにエントリを作成するには、次のように、ItemList プロパティを使用します。

' Create a new list, Books, containing the
' SysList objects Book1 and Book2
Dim Books as CacheActiveX.SysList

Set Books = CreateObject("CacheActiveX.SysList")
Set Books.ItemList(1)=Book1
Set Books.ItemList(2)=Book2

また、このプロパティを使って、次のように、別の SysList オブジェクトの内部に埋め込まれている SysList オブジェクトをアンパックすることもできます。

'Using the Cars example above, the list contains 3 cars 
Dim Car1 as CacheActiveX.SysList
Dim Car2 as CacheActiveX.SysList
Dim Car3 as CacheActiveX.SysList

Car1 = Cars.ItemList(1)
Car2 = Cars.ItemList(2)
Car3 = Cars.ItemList(3)
' Car1, Car2, and Car3 are all SysList objects which can
' themselves be unpacked using Item and ItemList.

Add()

リストの末尾に項目を追加します。

Sub Add(Item)

パラメータ :
  • Item — 追加する項目。

以下はその例です。
' Using the list Colors
Colors.Add("Yellow")

' Add Yellow to the end of the list Colors, making it the
' fourth element in the list.
Dim Color4 as String
Color4 = Colors.Item(4)
' Color4 is Yellow

Unicode 値を追加する

SysList オブジェクトに Unicode 値を配置するには、以下を呼び出します。

Syslist.Add(ChrW(9824))

結果として得られる SysList を後で 8 ビットのキャッシュ・サーバに送信した場合、その後結果として得られる $List オブジェクトにアクセスすると、<WIDE CHAR> エラーとなります。Caché が 8 ビット文字を使用しているか、Unicode 文字を使用しているかにかかわらず、正しい形式のオブジェクトを確実にサーバに送信するには、以下の行と共にコードを使用します。

Set Factory = CreateObject(CacheActiveX.Factory)
Set List = CreateObject(CacheActiveX.Syslist)
Factory.Connect(my_connection)
List.IsMultibyte = Factory.IsMultibyte

Clear()

SysList オブジェクトからデータをすべて消去し、同時にその構造を削除します。

Sub Clear()

以下はその例です。
' The data in the Cars SysList object is no longer useful

Cars.Clear()
' Cars is now an empty SysList object.

Get()

Caché ActiveX SysList オブジェクトを取得し、これを Caché $List オブジェクトに変換して、このオブジェクトを文字列として返します。

Function Get() As String

これは、以下を返します。

文字列

例 :
' Using the list Colors
Dim MyColors as String

MyColors = Colors.Get()

Remove()

リストから項目を削除します。その後、要素が 1 から順番に並ぶようにリストが縮小されます。

Sub Remove(Index As Integer)

パラメータ :
  • Index — 削除する項目のインデックス番号。

以下はその例です。
' Using the list Colors with Red, Blue, Green, and Yellow

Colors.Remove(2)
' This call removes Blue from the list, makes Green the
' second item in the list and makes Yellow the third item
' in the list.

Dim Color1 as String
Dim Color2 as String
Dim Color3 as String

Color1 = Colors.Item(1)
Color2 = Colors.Item(2)
Color3 = Colors.Item(3)
' Color1 is Red, Color2 is Green, Color3 is Yellow

Set()

Caché $List オブジェクト (文字列、つまり String と見なされます) を取り、Caché ActiveX SysList オブジェクトに変換します。

Sub Set(CacheList)

パラメータ :
  • CacheList — Caché $List

以下はその例です。
Dim NewList as CacheActiveX.SysList

Set NewList = CreateObject("CacheActiveX.SysList")
NewList.Set(x)

BinaryStream クラス

Caché BinaryStream オブジェクトは、写真などのバイナリ・ストリーム・データの作成や操作に使用します。

Caché BinaryStream クラスは、以下のプロパティをサポートしています。

  • Data プロパティ : 実際のデータを保持します。

Caché BinaryStream クラスは、以下のメソッドをサポートしています。

  • Clear : 永続的な格納場所からストリームのコンテンツを削除します。

  • DeleteAttribute : ストリームの特定の属性を削除します。

  • FileRead : クライアントにあるファイルからデータを読み取り、ストリームにインポートします。

  • FileWrite : サーバからストリームのデータを取得し、クライアント上のファイルに保存します。

  • GetAttribute : 文字ストリームと関連付けられている名前付き属性の値を返します。

  • GetPicture : IPictureDisp を返します。

  • IsDefinedAttribute : このストリームに対する名前付き属性が存在する場合は true、存在しない場合は false を返します。

  • NextAttribute : 属性名と値の組み合わせのシーケンスから、この次に来る属性名を取得します。

  • Read : ストリーム・オブジェクトからデータを読み取ります。

  • Rewind : ストリームの先頭に移動します。

  • SetAttribute : ストリームに属性を割り当てます。

  • SetPicture : Picture オブジェクトをバイナリ・ストリームに変換します。

  • Write : ストリームにデータを書き込みます。

Data プロパティ

ストリーム・オブジェクトと関連付けられているデータをすべて含みます。

Variant Data
Note:

Caché には、Data プロパティがストリームのデータすべてを保持するのに十分な大きさを持っていることを確認する手段がありません。これはアプリケーション自体で行う必要があります。

例 :
' Person has a binary stream attribute, Image. 
string = Person.Image.Data
' string contains the binary data of the picture

Clear()

永続的な格納場所からストリームのコンテンツを削除します。

Sub Clear()

このメソッドは、ストリームの永続的な拡張場所と一時的なストリームすべてを削除し、ストリームを初期状態に復元します。また、このストリームに関連する属性もすべて削除します。

例 :
' The Person class has a binary stream attribute Image 
Person.Image.Clear()

DeleteAttribute()

ストリームの特定の属性を削除します。

Boolean DeleteAttribute(String Name)

属性とは、このストリームに関連付けられている名前と値の組み合わせを含む文字列の配列です。

パラメータ :
  • Name — 削除する属性の名前。

これは、以下を返します。

属性が存在していた場合はブーリアン値の true、存在しなかった場合は false

例 :
Person.Image.DeleteAttribute("MyAttrib")

FileRead()

クライアントにあるファイルからデータを読み取り、ストリームにインポートします。

Boolean FileRead(String filename)

いったん読み取られたデータは、ストリームが閉じられるまで、メモリに保管されます。

パラメータ :
  • filename — インポートするデータのフル・パス。

これは、以下を返します。

読み取りが成功した場合はブーリアン値の true、成功しなかった場合は false

例 :
' The Person class has a binary stream attribute Image 
Person.Image.FileRead("c:\MyPicture.jpg")

FileWrite()

サーバからストリームのデータを取得し、クライアント上のファイルに保存します。

Boolean FileWrite(String filename)
パラメータ :
  • filename — データの保存先ファイルのフル・パス。

これは、以下を返します。

書き込みが成功した場合はブーリアン値の true、成功しなかった場合は false

例 :
' The Person class has a binary stream attribute Image 
Person.Image.FileWrite("c:\MyPicture.jpg")

GetAttribute()

文字ストリームと関連付けられている名前付き属性の値を返します。

String GetAttribute(String Name, String Default)

属性とは、このストリームに関連付けられている名前と値の組み合わせを含む文字列の配列です。

パラメータ :
  • Name — 属性の名前。

  • Default — 属性が定義されていない場合に返される既定値。

これは、以下を返します。

文字列

例 :
' The Person class has a binary stream attribute Image 
Attr1Value=Person.Image.GetAttribute("Attr1")

あるいは

' The Person class has a binary stream attribute Image 
Attr1Value=Person.Image.GetAttribute("Attr1",1)

GetPicture()

IPictureDisp を返します。

StdPicture GetPicture()
Note:

Visual Basic 2005 では、Visual Basic 6 で使用していたインタフェースの使用が中止されました。Visual Basic 2005 では、そのピクチャ・コントロールにイメージを使用しています。

Visual Basic 6 を使用している場合、Visual Basic のピクチャ・コントロールは GetPicture() から返されるため、それ以上の作業は必要はありません。Visual Basic 2005 を使用している場合は、バイナリ・データを取得してイメージ・オブジェクトを作成するラッパを記述する必要があります。これを実行するには、GetPicture() を呼び出さないようにします。代わりに、BinaryStream クラスを使用して .NET バイナリ・ストリーム・インタフェースを実装します。

これは、以下を返します。

StdPicture オブジェクト (IPictureDisp)

IsDefinedAttribute()

このストリームに対する名前付き属性が存在する場合は true を返します。

Boolean IsDefinedAttribute(String Name)
パラメータ :
  • Name — 存在確認の対象となる属性の名前。属性とは、このストリームに関連付けられている名前と値の組み合わせを含む文字列の配列です。

これは、以下を返します。

このストリームの名前付き属性が存在する場合はブーリアン値の true、存在しない場合は false

例 :
'The Person class has a binary stream attribute Image 
Dim exists as Boolean
exists=Person.Image.IsDefinedAttribute("MyAttrib")

NextAttribute()

属性名と値の組み合わせのシーケンスから、この次に来る属性名を取得します。

String NextAttribute(String AttrMatch)

このメソッドの操作対象となるのは、開始したい名前をコンテンツとして持つ文字列です。このメソッドでは、“%” で始まる名前はすべてスキップされます(属性とは、このストリームに関連付けられている名前と値の組み合わせを含む文字列の配列です)。

パラメータ :
  • AttrMatch — 返したい最初の名前の前に来る文字列。最初の属性から開始するには、空の文字列 ("") を渡します。これ以外の場合は、検索の対象となる最初の名前の前に来る文字列を渡します。

これは、以下を返します。

文字列

例 :
'The Person class has a binary stream attribute Image 
Person.Image.NextAttribute("")

あるいは

'The Person class has a binary stream attribute Image 
Person.Image.NextAttribute("MyAttrib")

Read()

ストリームから指定されたバイト数を返します。

String Read(Int bytes)

Visual Basic では Unicode 文字が使用されるので、文字列を構成する各文字は偶数バイトで表されます。つまり、引数で読み取るバイト数に奇数を指定して Read() を呼び出した場合、最後のバイトでは文字が半分だけ読み取られるという結果になります。

この状況を解決するために、Read() は全体が読み取られている文字のみで構成される文字列を返します。最後の部分的な文字は破棄されます。 ただし、ファイル・ポインタは適切に配置されるので、ポインタは次の読み取られていないバイトをポイントします。

例えば、“Help” という文字列の Unicode 文字から構成されるファイルがあるとします。この場合、Read(5) は “He” を返し、ファイルの位置は “l” の途中に残されます。Read(1) は空の文字列を返し、ファイルの位置は “l” と “p” の間に残ります。“Read(2)” は “p” を返し、ファイルは文字列の最後に位置付けられます。

BinaryStream.Read() によって返される実際の BSTR に奇数バイトが含まれている場合、Visual Basic の標準の文字列操作関数では、最後のバイトにアクセスできません。このようなストリームを処理するには、この文字列をバイト配列にコピーするか、LenBMidBAscB などの関数を使用してアクセスします。この問題に関する詳細は、Microsoft Developer Network (MSDN)Opens in a new tab サイトにある "Win32 API Programming with Visual Basic" の第 6 章を参照してください。

パラメータ :
  • chars — ストリームから読み取られるバイト・セット。

これは、以下を返します。

ストリームの中の、指定されたバイト数 (chars) を含む文字列。

例 :
'The Person class has a binary stream attribute image
'Grab the first 100 bytes 
Image1.Picture=Person.Image.Read(100)

Rewind()

ストリームの先頭に移動します。

Boolean Rewind()
これは、以下を返します。

移動が成功した場合はブーリアン値の true、成功しなかった場合は false

例 :
' The Person class has a binary stream attribute Image
' Rewind it before using it 
Person.Image.Rewind

SetAttribute()

ストリームに属性を割り当てます。

Sub SetAttribute(String Name, Value)

属性とは、ストリームに関連付けられた配列に格納された名前と値の組み合わせです。

パラメータ :
  • Name — 削除する属性の名前。

  • Value — 属性に割り当てる値。Value には基本型ならどれでも指定できます (つまり、配列やオブジェクトへの参照は指定できません)。また、文字列の場合は引用符で囲む必要があります。

例 :
'The Person class has a binary stream attribute Image 
Person.Image.SetAttribute("ShoeSize",10)

SetPicture()

Visual Basic Picture オブジェクトをサーバのバイナリ・ストリームに変換します。

Sub SetPicture(StdPicture picture)
パラメータ :
  • picture — 変換する Visual Basic Picture。

以下はその例です。
' The Person class has a binary stream attribute Image 
Set pic = photo.Image
Person.Image.SetPicture pic

Write()

ストリームにデータを書き込みます。

Boolean Write(String data)
パラメータ :
  • data — ストリームに書き込まれるバイト・セット。

    Important:

    引数には、文字列リテラルではなく変数を指定します。(Person.Image.Write "test" のように) リテラルを渡した場合、タイプの不一致エラーが発生します。

これは、以下を返します。

書き込みが成功した場合はブーリアン値の true、成功しなかった場合は false

例 :
' The Person class has a binary stream attribute Image 
Person.Image.Write(data)

CharStream クラス

Caché CharStream オブジェクトは、ジャーナル・エントリやブックの章などの文字ストリーム・データの作成や操作に使用します。

Caché CharStream クラスは、以下のプロパティをサポートしています。

  • Data プロパティ : ストリーム・オブジェクトと関連付けられているデータをすべて含みます。

Caché CharStream クラスは、以下のメソッドをサポートしています。

  • Clear : 永続的な格納場所からストリームのコンテンツを削除します。

  • DeleteAttribute : ストリームの特定の属性を削除します。

  • FileRead : クライアントにあるファイルからデータを読み取り、ストリームにインポートします。

  • FileWrite : サーバからストリームのデータを取得し、クライアント上のファイルに保存します。

  • GetAttribute : ストリームと関連付けられている名前付き属性の値を返します。

  • IsDefinedAttribute : このストリームに対する名前付き属性が存在する場合は true、存在しない場合は false を返します。

  • NextAttribute : 属性名と値の組み合わせのシーケンスから、この次に来る属性名を取得します。

  • Read : ストリームから指定された数の文字を返します。

  • Rewind : ストリームのデータの先頭に移動します。

  • SetAttribute : ストリームに属性を割り当てます。

  • Write : ストリームにデータを書き込みます。

Data プロパティ

ストリーム・オブジェクトと関連付けられているデータをすべて含みます。

Variant Data
Note:

Caché には、Data プロパティがストリームのデータすべてを保持するのに十分な大きさを持っていることを確認する手段がありません。これはアプリケーション自体で行う必要があります。

読み取り :

ストリーム・オブジェクトと関連付けられているすべてのデータ。

例 :
' Person has a character stream Memo
Text1.Text = Person.Memo.Data
' The textbox now displays the data in Memo

Clear()

永続的および一時的な格納場所からストリームのコンテンツを削除します。

Sub Clear()

このメソッドは、ストリームの永続的な拡張場所と一時的なストリームすべてを削除し、ストリームを初期状態に復元します。また、このストリームに関連する属性もすべて削除します。

例 :
' The Person class has a character stream Diary
Person.Diary.Clear()

DeleteAttribute()

ストリームの特定の属性を削除します。

Boolean DeleteAttribute(String AttrName)

属性とは、このストリームに関連付けられている名前と値の組み合わせを含む文字列の配列です。

パラメータ :
  • Name — 削除する属性の名前。

これは、以下を返します。

属性が存在していた場合はブーリアン値の true、存在していない場合は false

例 :
Person.Image.DeleteAttribute("MyAttrib")

FileRead()

クライアントにあるファイルからデータを読み取り、ストリームにインポートします。

Boolean FileRead(String filename)

いったん読み取られたデータは、ストリームが閉じられるまで、メモリに保管されます。

パラメータ :
  • filename — インポートするデータのフル・パス。

これは、以下を返します。

ファイル・データの読み取りおよびインポートが成功した場合はブーリアン値の true、成功しなかった場合は false

例 :
' The Person class has a character stream Memo
Person.Memo.FileRead("c:\Memo.txt")

FileWrite()

サーバからストリームのデータを取得し、クライアント上のファイルに保存します。

Boolean FileWrite(String filename)

パラメータ :
  • filename — データの保存先ファイルのフル・パス。

これは、以下を返します。

書き込みが成功した場合はブーリアン値の true、成功しなかった場合は false

例 :
' The Person class has a character stream Memo
Person.Memo.FileWrite("c:\Memo.txt")

GetAttribute()

文字ストリームと関連付けられている名前付き属性の値を返します。

String GetAttribute(String AttrName, String DefaultValue)

属性とは、このストリームに関連付けられている名前と値の組み合わせを含む文字列の配列です。

パラメータ :
  • AttrName — 属性の名前。

  • DefaultValue — 属性が定義されていない場合に返される既定値。

これは、以下を返します。

文字列

例 :
' The Person class has a character stream Image
Attr1Value=Person.Image.GetAttribute("Attr1")

あるいは

' The Person class has a character stream Image
Attr1Value=Person.Image.GetAttribute("Attr1",1)

IsDefinedAttribute()

このストリームに対する名前付き属性が存在する場合は true を返します。

Boolean IsDefinedAttribute(String Name)

属性とは、このストリームに関連付けられている名前と値の組み合わせを含む文字列の配列です。

パラメータ :
  • Name — 存在確認の対象となる属性の名前。

これは、以下を返します。

このストリームの名前付き属性が存在する場合はブーリアン値の true、存在しない場合は false

例 :
'The Person class has a character stream Image

Dim exists as Boolean
exists=Person.Image.IsDefinedAttribute("MyAttrib")

NextAttribute()

属性名と値の組み合わせのシーケンスから、この次に来る属性名を取得します。

String NextAttribute(String AttrMatch)

属性とは、このストリームに関連付けられている名前と値の組み合わせを含む文字列の配列です。このメソッドの操作対象となるのは、開始したい名前をコンテンツとして持つ文字列です。このメソッドでは、“%” で始まる名前はすべてスキップされます。

パラメータ :
  • AttrMatch — 返したい最初の属性名の前に来る文字列。最初の属性名から開始するには、空の文字列 ("") を渡します。これ以外の場合は、検索の対象となる最初の名前値の前に来る文字列を渡します。

これは、以下を返します。

属性名と値の組み合わせのシーケンスの中の、この次に来る属性名を含む文字列。

例 :
'The Person class has a character stream Image
Person.Image.NextAttribute("")

あるいは

'The Person class has a character stream Image
Person.Image.NextAttribute("MyAttrib")

Read()

ストリームから指定された文字数を返します。

String Read(Int chars)
パラメータ :
  • chars — ストリームから読み取られる文字数。

これは、以下を返します。

文字列

例 :
' The Person class has a character stream Memo
' Grab the first 10 characters
Text1.text=Person.Memo.Read(10)

Rewind()

ストリームの先頭に移動します。

Boolean Rewind()

これは、以下を返します。

移動が成功した場合はブーリアン値の true、成功しなかった場合は false

例 :
' The Person class has a character stream Memo
' Rewind it before using it
Person.Memo.Rewind

SetAttribute()

ストリームに属性を割り当てます。

Sub SetAttribute(String Name, Value)

属性とは、ストリームに関連付けられた配列に格納された名前と値の組み合わせです。

パラメータ :
  • Name — 削除する属性の名前。

  • Value — 属性に割り当てる値。Value には基本型ならどれでも指定できます (つまり、配列やオブジェクトへの参照は指定できません)。また、文字列の場合は引用符で囲む必要があります。

例 :
'The Person class has a character stream Diary

Person.Image.SetAttribute("BGColor","ffffff")

Write()

ストリームにデータを書き込みます。

Boolean Write(String data)

パラメータ :
  • data — 書き込むデータを含む文字列。

これは、以下を返します。

書き込みが成功した場合はブーリアン値の true、成功しなかった場合は false

例 :
' The Person class has a character stream Memo
Person.Memo.Write(data)

FeedbackOpens in a new tab