• 検索結果がありません。

Caché での ActiveX と .NET の使用法

N/A
N/A
Protected

Academic year: 2021

シェア "Caché での ActiveX と .NET の使用法"

Copied!
22
0
0

読み込み中.... (全文を見る)

全文

(1)

Caché での ActiveX と

.NET の使用法

Version 5.1

2006-03-14

(2)

Caché での ActiveX と .NET の使用法 Caché Version 5.1 2006-03-14 Copyright © 2006 InterSystems Corporation. All rights reserved.

このドキュメントは、 Sun Microsystems、RenderX Inc.、 アドビ システムズ および ワールドワイド・ウェブ・コンソーシアム (www.w3c.org)のツールと情報を使用して、 Adobe Portable Document Format (PDF)で作成およびフォーマットされました。 主要ドキュメント開発ツールは、InterSystemsが構築したCaché と Javaを使用した特別目的のXML処理アプリケーションで す。

Caché 製品とロゴは InterSystems Corporation の登録商標です。

Ensemble 製品とロゴは InterSystems Corporation の登録商標です。

InterSystems という名前とロゴは InterSystems Corporation の登録商標です

このドキュメントは、インターシステムズ社(住所:One Memorial Drive, Cambridge, MA 02142)あるいはその子会社が所有す る企業秘密および秘密情報を含んでおり、インターシステムズ社の製品を稼動および維持するためにのみ提供される。こ の発行物のいかなる部分も他の目的のために使用してはならない。また、インターシステムズ社の書面による事前の同意 がない限り、本発行物を、いかなる形式、いかなる手段で、その全てまたは一部を、再発行、複製、開示、送付、検索可能 なシステムへの保存、あるいは人またはコンピュータ言語への翻訳はしてはならない。 かかるプログラムと関連ドキュメントについて書かれているインターシステムズ社の標準ライセンス契約に記載されている 範囲を除き、ここに記載された本ドキュメントとソフトウェアプルグラムの複製、使用、廃棄は禁じられている。インターシス テムズ社は、ソフトウェアライセンス契約に記載されている事項以外にかかるソフトウェアプログラムに関する説明と保証を するものではない。さらに、かかるソフトウェアに関する、あるいはかかるソフトウェアの使用から起こるいかなる損失、損害 に対するインターシステムズ社の責任は、ソフトウェアライセンス契約にある事項に制限される。 前述は、そのコンピュータソフトウェアの使用およびそれによって起こるインターシステムズ社の責任の範囲、制限に関する 一般的な概略である。完全な参照情報は、インターシステムズ社の標準ライセンス契約に記され、そのコピーは要望によっ て入手することができる。 インターシステムズ社は、本ドキュメントにある誤りに対する責任を放棄する。また、インターシステムズ社は、独自の裁量 にて事前通知なしに、本ドキュメントに記載された製品および実行に対する代替と変更を行う権利を有する。

Caché および InterSystems Caché、Caché SQL、 Caché ObjectScript および Caché Object は、インターシステムズ社の 商標です。 ここで使われている他の全てのブランドまたは製品名は、各社および各組織の商標または登録商標です。 インターシステムズ社の製品に関するサポートやご質問は、以下にお問い合わせください: InterSystems ワールドワイド カスタマサポート +1 617 621-0700 Tel: +1 617 374-9391 Fax: support@InterSystems.com Email:

(3)

目次

1 はじめに ... 1 2 ActiveX インタフェースの要素... 3 2.1 ActiveX 用 Caché オブジェクト・サーバ ... 3 2.2 Caché ActiveX オブジェクト... 4 3 Visual Basic プロジェクトの構成... 7

4 Caché オブジェクト / Visual Basic アプリケーションの構成部分... 9

4.1 サーバへの接続... 9

4.2 新規オブジェクト・インスタンスの作成 ... 11

4.3 オブジェクトの保存... 11

4.4 既存のオブジェクトのオープン ... 12

4.5 Visual Basic での Caché オブジェクトの使用法... 12

4.6 Visual Basic でのコールバック機能の使用法... 13

4.7 Visual Basic でのクエリの実行... 13

(4)

図一覧

ActiveX 用 Caché オブジェクト・サーバ... 1

Visual Basic コードの自動継続... 7

Visual Basic でのポップアップ・ヘルプ・ウィンドウ... 7

(5)

テーブル一覧

(6)
(7)

1

はじめに

ここでは以下について説明します。 • ActiveX インタフェースの要素

• Visual Basic プロジェクトの構成

• Caché オブジェクト / Visual Basic アプリケーションの構成部分

Caché オブジェクトは、幅広いクライアント・アプリケーションとの接続、および ActiveX インタフェー ス経由の開発ツールを提供します。

ActiveX 用 Caché オブジェクト・サーバ

(8)

• ActiveX 用 Caché オブジェクト・サーバ — ActiveX オートメーション・サーバで、Caché オブジェ クトを ActiveX オブジェクトとして公開します。

• Caché リスト・コントロール — Visual Basic 用に書かれた ActiveX コントロールで、クエリ結果の 表示に役に立ちます。クエリの選択のためのインタフェースと、実行にはクエリ・パラメータを提 供する必要があります。

• Caché クエリ・コントロール — Visual Basic 用に書かれた ActiveX コントロールで、クエリを実行 して結果を表示する単純なインタフェースを提供します。Caché クエリ・コントロールは、実行時 に ID を返す任意のクエリを選択し、任意のクエリ・パラメータのためのインタフェースを提供し ます。

• Caché オブジェクト・フォーム・ウィザード — 単一 Caché クラスのプロパティにアクセスするため に、迅速に、容易で簡単なフォームを作成できる Visual Basic アドインです。

2        Caché での ActiveX と .NET の使用法 はじめに

(9)

2

ActiveX インタフェースの要素

Caché ActiveX バインディングは、ActiveX オブジェクトをサポートするすべてのアプリケーションか らの Caché へのアクセスを提供します。このバインディングにより、Visual Basic 内の Caché オブジェ クト、およびその他のクライアントのアプリケーションを開始し、操作することができます。また、サー バ側オブジェクトをインスタンス化するための、トランスペアレント・インタフェースを提供します。バイ ンディングには、Visual Basic からのみ使用でき、ひとまとめに Visual Caché と呼ばれる特別なツー ル一式も含まれます。

注釈: このドキュメントの例ではすべて Visual Basic を使用しますが、Visual Caché は使用しませ ん。

2.1 ActiveX 用 Caché オブジェクト・サーバ

ActiveX 用 Caché オブジェクト・サーバは、完全な ActiveX インプロセス・オートメーション・サーバ です。これにより、クライアント・アプリケーションは、サーバ上の Caché オブジェクトにアクセスするこ とができます。ActiveX 用 Caché オブジェクト・サーバは、内部に ActiveX オブジェクトを作成しま す。ActiveX オブジェクトは、Caché サーバのオブジェクトを反映します。オブジェクト・プロパティは ActiveX プロパティとして公開されます。同様に、メソッドは ActiveX メソッドとして公開されます。メ ソッドが呼び出されると、サーバ・マシン上で実行されます。 すべてのクライアント側 CachéObjInstance オブジェクトは、サーバ上のオブジェクトを参照します。 複数のクライアント側オブジェクトが、同じサーバ側オブジェクトを参照することができます。クライア ント側オブジェクトが接続されている限り、それぞれの参照が追加されるたびに、サーバ側オブジェ クトの参照数は 1 ずつ増加します。 SysList や ResultSet オブジェクトのような特別な機能を実行するクライアント側オブジェクトは、 Caché オブジェクトに基づいておらず、サーバ上のオブジェクトを参照しません。ActiveX から使用

(10)

可能なオブジェクトのタイプに関する詳細は、以下の “Caché ActiveX オブジェクト” を参照してく ださい。

クライアント側 Caché オブジェクトは ActiveX オブジェクトで、IDispatch インタフェース (Visual Basic での “オブジェクト” ) へのポインタ用に参照されます。例えば、patient オブジェクトのプロパティと メソッドに Visual Basic からアクセスするには、以下のコードを使用します。

Print patient.Name

'returns the value of Name for the referenced patient object Print patient.Admit

'runs the Admit() method of the patient object on the server

一般的な ActiveX オートメーション・サーバの進歩に伴い、Caché ActiveX 用オブジェクト・サーバ は、クライアント・オペレーティング・システムで定義するオブジェクト・クラスのすべてを登録する必 要がありません。その代わりに、実行時にクラス情報を決定します。これにより、ActiveX レジストリ・ エントリを維持しないで、多数のクライアント・マシンと多数のサーバ・ベースのオブジェクトの大容量 のアプリケーションを開発することが可能です。 $system.OBJ.ExportODL(classlist,odlfile,flag,&errorlog) ルーチンを使用して、オブジェクトに静的 な ActiveX タイプ・ライブラリを生成することもできます。詳細は、"Caché クラス・リファレンス"を参照 してください。

2.2 Caché ActiveX オブジェクト

Caché は、一連の ActiveX オブジェクトを提供して、Caché サーバ接続を管理し、オブジェクトとの 対話を可能にします。これらのオブジェクトはCacheObject.dll 内にあり、以下を含みます。 • CacheObject.ObjInstance — サーバ側 Caché オブジェクトのクライアント側の表現体です。クラ イアントのアプリケーションが使用する各サーバ側の Caché オブジェクトに対して、1 つの CacheObject.ObjInstance のインスタンスが存在します。 • CacheObject.Factory — ファクトリ・オブジェクトです。アプリケーションはこのオブジェクトを使用 して Caché サーバへの接続を確立し、Caché オブジェクトを作成して管理します。アプリケー ションには、CacheObject.Factory クラスのインスタンスを 1 つだけ生成する必要があります。 • CacheObject.SysList — リスト操作オブジェクトです。アプリケーションはこのオブジェクトを使用 して、Caché の $List 形式でデータを作成し、管理します。 • CacheObject.ResultSet — クエリ処理オブジェクトです。アプリケーションはこのオブジェクトを 使用して、クエリ (%Library.Query のインスタンスである 内部クラス・クエリ または任意 SQL クエ リ) を実行し、これらのクエリの結果を処理します。 • CacheObject.BinaryStream — バイナリ・ストリーム操作オブジェクトです。アプリケーションはこ のオブジェクトを使用して、Caché の バイナリ・ストリーム でデータを作成し、管理します。

4        Caché での ActiveX と .NET の使用法 ActiveX インタフェースの要素

(11)

• CacheObject.CharStream — 文字ストリーム操作オブジェクトです。アプリケーションはこのオブ ジェクトを使用して、Caché の 文字ストリーム でデータを作成し、管理します。

(12)
(13)

3

Visual Basic プロジェクトの構成

参照設定なしに Visual Basic プロジェクトから Caché オブジェクトを使用することは可能ですが、事 前結合を使用する場合には Visual Basic プロジェクトを構成する必要があります。事前結合は Visual Basic の機能で、ユーザがオブジェクトを宣言して、そのタイプに関する情報を伝えるためのもので す。例えば、事前結合では、以下を指定することが可能です。

Dim MyList as CacheObject.SysList

事前結合はポップアップ・メニューを提供し、文の終了に使用できる要素を表示することもできます。 例えば、利用可能なオブジェクト・タイプのリストから新規のインスタンスを関連付けることができます。 Visual Basic コードの自動継続 事前結合は、Caché 要素にポップアップ構文ウィンドウを提供します。 Visual Basic でのポップアップ・ヘルプ・ウィンドウ 事前結合を使用するには、以下の説明のとおり、プロジェクト参照を選択します。Visual Basic プロ ジェクト構成プロセスは、プロジェクト参照の選択から構成されます。新規の Visual Basic プロジェク トを作成する際には常に、プロジェクト参照にcacheobject.dll を追加する必要があります。以下は その方法です。

(14)

1. Visual Basic 内で、[プロジェクト]メニューの[参照設定]を選択して、参照ウィンドウを開きます。 2. CacheObject の左側のチェック・ボックスにチェックを付けます。

CacheObject が利用可能な参照のリストに存在しない場合、 1. [参照]ボタンをクリックします。

2. <installation-root>\bin ディレクトリで cacheobject.dll を探し、ダブルクリックします。

8        Caché での ActiveX と .NET の使用法 Visual Basic プロジェクトの構成

(15)

4

Caché オブジェクト / Visual Basic アプ

リケーションの構成部分

ここでは、Caché オブジェクトを操作する Visual Basic の基本的な機能について説明します。以下 の内容を取り上げます。

• サーバへの接続

• 新規オブジェクト・インスタンスの作成

• オブジェクトの保存

• 既存のオブジェクトのオープン

• Visual Basic での Caché オブジェクトの使用法

• Visual Basic でのコールバック機能の使用法 • Visual Basic でのクエリの実行 • Visual Basic でのエラー・トラップ

4.1 サーバへの接続

通常、クライアント・アプリケーションはまずCacheObject.Factory オブジェクトを作成し、Caché を 起動しているサーバ・マシンへの接続を確立します。Visual Basic 内では、以下のコードがこれを実 行します。

(16)

'Visual Basic Code option Explicit

Dim factory As CacheObject.Factory Private Sub Form_Load()

' Create instance of factory object

' You must use "Set" to assign an object value Set factory = CreateObject("CacheObject.Factory") ' Establish connection to server if one doesn't exist If Not factory.IsConnected() Then

Dim connectstring As String

' You can explicitly specify the connection string: connectstring = "cn_iptcp:127.0.0.1[1972]:USER" ' Alternately, you can pop up a connection dialog ' This method returns the connection string. connectstring = factory.ConnectDlg()

Dim success As Boolean

success = factory.Connect(connectstring) End If

End Sub

まず、Visual Basic の CreateObject 関数を呼び出して、CacheObject.Factory オブジェクトのイン スタンスを生成します。

Set factory = CreateObject("CacheObject.Factory")

CreateObject がcacheobject.dll (CacheObject.Factory オブジェクトの実装を含みます) を見つけ ることができない場合や、ロードできない場合は失敗します。 上記のコードにもあるとおり、factory.IsConnected を使用して、接続が確立されているかどうかを調 べるために、オプションでCacheObject.Factory オブジェクトをテストすることができます。このメソッ ドは接続が存在する場合、真を返します。 次に、CacheObject.Factory オブジェクトの Connect メソッドを使用して、サーバへの接続を確立し ます。 success = factory.Connect(connectstring) Connect に、接続プロトコル、IP アドレスか完全修飾されたドメイン名 (FQDN) とポート番号、および コロン (:) で区切られたネームスペースからなる接続文字列を渡します。接続プロトコルは常に “cn_iptcp” で、TCP/IP プロトコルを示します。IP アドレスとポートはともに特定の Caché サーバを 一意に指定します。ポート番号は IP アドレスか FQDN の直後に続く角括弧 ( “[” と “]” ) で囲ん で指定します。ネームスペースは、Caché オブジェクトを含むネームスペースを指定します。ネーム スペースを省略すると、アプリケーションは既定のネームスペースに接続します。 ユーザは、直接 Connect メソッドに接続文字列を渡すことができます。また、エンド・ユーザが接続 情報を接続ダイアログ・ボックスで指定できるようにすることも可能です。このダイアログは、 CacheObject.Factory オブジェクトの ConnectDlg メソッドが実行されているときはいつでも表示され ます。エンド・ユーザが接続情報を指定し、[OK]をクリックすると、ConnectDlg メソッドは生じた接続 文字列を返します。 その文字列は、接続を作成するためにConnect に渡されます。

10       Caché での ActiveX と .NET の使用法 Caché オブジェクト / Visual Basic アプリケーションの構成部分

(17)

Connect は、サーバに正常に接続した場合は真を、失敗した場合は偽を返します。

4.2 新規オブジェクト・インスタンスの作成

CacheObject.Factory オブジェクトの New メソッドを使用して、Caché オブジェクトの新規インスタン スを生成することが可能です。

Dim Patient As Object

Set Patient = factory.New("Patient")

New の引数は、インスタンス生成のための Caché のクラス名です。New は以下の処理を実行しま す。

• 指定されたオブジェクトの新規インスタンスを、サーバ上に作成します。この場合、サーバ側で 以下を呼び出すのと同じです。

Set object = ##class(Patient).%New()

ActiveX 用 Caché オブジェクト・サーバに、このサーバ側オブジェクトの OREF 値を返します。 • サーバ側オブジェクトに接続しているクライアントにある ActiveX オブジェクトの新規インスタン

スを生成します。この ActiveX オブジェクトに、ハンドル (LPDISPATCH) を返します。

• 指定されたオブジェクトを New で作成できない場合は、エラーが発生します ("Visual Basic で のエラー・トラップ" を参照してください)。

4.3 オブジェクトの保存

永続オブジェクトのインスタンスを、その %Save メソッド (Visual Basic では sys_Save と呼ばれます) を使用して保存できます。sys_Save は Caché オブジェクトのメソッドであり、CacheObject.Factory オブジェクトのメソッドではないことに注意してください。

Dim status As String patient.sys_Save patient.sys_Close Set patient = Nothing

また、使用の際にオブジェクト上の sys_Close を呼び出す必要があることに注意してください。これ は、サーバ上のオブジェクトをクローズします。また、Patient を Nothing に設定して、Visual Basic のオブジェクトをクローズします。

sys_Save と sys_Close への呼び出しの後に、括弧がないことにも注意してください。これは、Visual Basic では、呼び出しの後に空の括弧が続く場合、その結果を使用する必要があるためです。呼び

(18)

出しの返り値を無視するには (または返り値がない場合には)、上記の呼び出しのように、括弧を省 略します。

4.4 既存のオブジェクトのオープン

CacheObject.Factory オブジェクトの OpenId メソッドを使用して、データベースから既存の Caché オブジェクトをロードできます。

Dim Patient As Object

Set Patient = factory.OpenId("MyApp.Patient", id)

OpenId は 2 つの引数を取ります。オープンする Caché クラスの名前、およびオブジェクトがデータ ベースに格納される ID 値です。ID 値は文字列として処理されます。OpenId では以下を実行しま す。

• サーバのメモリに、指定されたオブジェクトをロードします。この場合、サーバ側で以下を呼び出 すのと同じです。

Set object = ##class(MyApp.Patient).%OpenId(id)

ActiveX クライアントのメモリ内サーバ側オブジェクトに対する OREF 値を返します。

• サーバ側オブジェクトに接続しているクライアントにある ActiveX オブジェクトの新規インスタン スを生成します。ハンドルをこの ActiveX オブジェクトへ返します。

指定されたオブジェクトを OpenId メソッドでオープンできない場合は、エラーが発生します (" “Visual Basic でのエラー・トラップ” " を参照してください)。

注釈: クライアント側の Open メソッドもあり、完全な OID 値 (%Persistent クラスの %Open メソッド に類似) を使用してオブジェクトをオープンします。

4.5 Visual Basic での Caché オブジェクトの使用法

CacheObject.Factory オブジェクトの New または OpenId メソッドを呼び出して Caché オブジェクト のインスタンスを生成すると、別の Visual Basic オブジェクトを使用するのと同様に、そのオブジェク トを使用することができます。例えば、プロパティの値を取得して設定します。

Dim name As String name = patient.Name patient.Name = name

12       Caché での ActiveX と .NET の使用法 Caché オブジェクト / Visual Basic アプリケーションの構成部分

(19)

オブジェクト上でメソッドを呼び出すことができます (メソッドがサーバ上で実行されることに注意して ください)。

patient.Admit()

Visual Basic と Caché ObjectScript では、オブジェクトの使用法が少し異なります。Caché で “%” で始まるメソッドは、Visual Basic では “sys_” で始まります。したがって、ObjectScript の %Save メ ソッドは、Visual Basic では sys_Save メソッドです。

また、Visual Basic オブジェクトの既定のプロパティに依存しないようにします。例えば、以下を

patient.Name = txtName.Text

以下の代わりに使用します。

patient.Name = txtName ' Don't use default property syntax

4.6 Visual Basic でのコールバック機能の使用法

ActiveX 用 Caché オブジェクト・サーバは、ファクトリ・クラスの SetOutput メソッド経由で、コールバッ ク機能をサポートします。このメソッドにより、システム出力をユーザのクライアント・アプリケーション に向けることができます。例えば以下のようになります。

Set factory = CreateObject("CacheObject.Factory") factory.SetOutput(Text1)

' System output now goes to textbox Text1

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

factory.SetOutput("")

4.7 Visual Basic でのクエリの実行

Caché はクエリを実行する強力なインタフェースを提供します。このインタフェースは、ResultSet オ ブジェクトを使用して、ActiveX からアクセスできます。ResultSet オブジェクトは ActiveX にのみ存 在し、Caché 内で他に関連するオブジェクトはありません。各ResultSet オブジェクトは特定の Caché クラスで定義された特定のクエリに結びついています。

例えば、Person クラスではクエリ ByName を実行します。

(20)

Dim rset As CacheObject.ResultSet Dim columns As Integer

Dim counter As Integer

Set rset = factory.ResultSet("Person","ByName") 'Find out how many columns will be in the data columns = rset.GetColumnCount()

'Now run the ByName query.

'This query will return all people

'whose names begin with the letter specified rset.Execute("A")

'Cycle through the returned rows and access the data While rset.Next()

For counter = 1 To columns Print rset.GetData(counter) Next counter

Wend

'Close the result set rset.Close()

この例を使用すると、クラスPerson で定義したクエリ ByName を実行できます。このクエリは、指定 した文字 ( “A” ) で始まる名前を持つ全員のオブジェクトを返します。クエリを実行した後、rset ResultSet オブジェクトの Next メソッドを呼び出すことで、1 つの行から次の行へ移動できます。 ResultSet GetColumnCount を使用して、データの各行にある列数を割り出し、上記の For ループ を使用して、現在の行の各列に格納された値を出力します。While ループで、1 つの行から次の行 へ移動します。それらをまとめて、クエリによって返されたすべてのデータを出力できます。すべて のデータが処理されると、Close でResultSet オブジェクトをクローズできます。

4.8 Visual Basic でのエラー・トラップ

CacheObject.Factory オブジェクトは、エラーの条件に遭遇すると、Visual Basic エラーを発生しま す。Visual Basic の err オブジェクトを使用して、エラーに関する情報を取得できます。例えば以下 のようになります。

Private Sub OpenObject(id As String) ' Set up error handler

On Error GoTo errortrap:

' try to open non-existent object Dim Patient As Object

Set Patient = factory.OpenId("Patient", id) '...

Exit Sub errortrap:

' handle error (show error string in dialog box) MsgBox (Err.Description)

End Sub

14       Caché での ActiveX と .NET の使用法 Caché オブジェクト / Visual Basic アプリケーションの構成部分

(21)

交互に、CacheObject.Factory クラスの GetErrorText メソッドを使用できます。このメソッドは生成 された err オブジェクトの説明プロパティを取得し、生成されたエラーのテキストを返します。例えば 以下のようになります。

' Caché was unable to save your class MyClass.

' The returned error is encapsulated by the err object msg = factory.GetErrorText(err.description)

' msg now contains the string ' "Unable to save class: MyClass"

Caché ActiveX バインディングは、以下のエラー・コードのうちのいずれかを返す場合があります。 ActiveX エラー・コード 意味 エラー・コード オブジェクト作成の試行中に、エラーが発生しました。指定したネーム スペースとサーバに、クラスが存在することを確認します。 9990 Caché システム上でエラーが発生しました。 9991 返りタイプ %Status を持つメソッドでエラーが発生したため、状態コード が偽を返します。"Caché エラー・リファレンス" で内部メッセージのリス トを参照してください。 9992 Visual Basic でのエラー・トラップ

(22)

参照

関連したドキュメント

水道水又は飲用に適する水の使用、飲用に適する水を使

• 1つの厚生労働省分類に複数の O-NET の職業が ある場合には、 O-NET の職業の人数で加重平均. ※ 全 367

※ 硬化時 間につ いては 使用材 料によ って異 なるの で使用 材料の 特性を 十分熟 知する こと

注意: Dell Factory Image Restore を使用す ると、ハードディスクドライブのすべてのデ

【その他の意見】 ・安心して使用できる。

計量法第 173 条では、定期検査の規定(計量法第 19 条)に違反した者は、 「50 万 円以下の罰金に処する」と定められています。また、法第 172

利用している暖房機器について今冬の使用開始月と使用終了月(見込) 、今冬の使用日 数(見込)

専用区画の有無 平面図、写真など 情報通信機器専用の有無 写真など.