ヘッダーをスキップ
Oracle Objects for OLE 開発者ガイド
11g リリース1(11.1)
E05794-01
  目次へ
目次
索引へ
索引

戻る
戻る
 
次へ
次へ
 

14 データ・コントロール・プロパティ

この章では、Oracle Data Controlのプロパティについて説明します。データ・コントロール・の概要は、「Oracle Data Control」を参照してください。


関連項目:

詳細は、Microsoft Visual Basicのヘルプおよびマニュアルを参照してください。

内容は次のとおりです。

次の各プロパティは、OraDynasetオブジェクトおよびOracle Data Controlに適用されます。


AllowMoveLastプロパティ

適用対象

Oracle Data Control

説明

ユーザーが、Data ControlのMoveLastボタンを使用して最後のレコードに移動可能かどうかを決定します。設計時および実行時に読取り/書込みができます。

使用方法

oradata1.AllowMoveLast = [True | False]

備考

デフォルトでは、AllowMoveLastTrueです。この場合、最後のレコードへの移動に非常に時間がかかる可能性がある場合でも、レコードの移動に関するユーザーの制限はありません。

AllowMoveLastFalseの場合、Data ControlのMoveLastボタンは、グレー表示になっており無効です。ただし、最後のレコードに到達した(ユーザーがセットの終わりまで移動したか、コード上で最後のレコードを指すレコード・ポインタに位置付けられたため)後は、ボタンは有効です。これによりユーザーは、問合せ全体がフェッチされているかどうかについて視覚的なフィードバックを得られます。このプロパティをFalseに設定した場合でも、MoveLastメソッドは使用できます。

このプロパティへの変更は、Refreshメソッドがデータ・コントロールに送信された後に有効になります。

データ型

Integer(ブール)


AutoBindingプロパティ

適用対象

Oracle Data Control

説明

データベース・オブジェクト・パラメータの自動バインディングを実行するかどうかを決定します。設計時および実行時に読取り/書込みができます。

使用方法

oradata1.AutoBinding = [ True | False

備考

デフォルトでは、AutoBindingTrueです。この場合、OraParametersコレクションのパラメータは、データ・コントロールのリフレッシュ前(SQL文が実行される前)に、RecordSourceプロパティのSQL文にバインドされます。技術的に言えば、パラメータはレコードセットの再作成時に再バインドされます。

AutobindingFalse設定は、RecordSourceプロパティのSQL文を再バインドして再実行する必要がある場合にのみ、有効になります。単にパラメータ値を変更してデータ・コントロールをリフレッシュする場合、または単にレコードセットをリフレッシュする場合(SQL文は再実行のみが必要)は該当しません。RecordSourceプロパティを変更してSQL文を変更する場合は該当します。

このプロパティは、パラメータを含まないSQL文の実行時にすべてのパラメータのバインディングを無効にする場合にも使用します(CreateDynasetRefreshまたはExecuteSQLを使用)。

このプロパティへの変更は、Refreshメソッドがデータ・コントロールに送信された後(および該当条件が適用された後)に有効になります。このプロパティへの変更は、recordset.Refreshが実行される場合は無効です。

データ型

Integer(ブール)

この例では、AutoBindingの使用方法と、データ・コントロールおよびレコードセットのリフレッシュに与える影響を示します。このコードをoradata1という名前のOracle Data Controlを含む新規フォームの定義セクションにコピーし、その後、[F5]を押して実行します。

Sub Form_Load ()

 'Set the username and password.
 oradata1.Connect = "scott/tiger"

 'Set the databasename.
 oradata1.DatabaseName = "ExampleDb"

 'Refresh the data control without setting the RecordSource. This has the
 'effect of creatingthe underlying database object so that parameters
 'can be added.
 oradata1.Refresh

 'Set the RecordSource and use a SQL parameter for job.
 oradata1.RecordSource = "select * from emp where job = :job"

 'Add the job input parameter with initial value MANAGER.
 oradata1.Database.Parameters.Add "job", "MANAGER", 1

 'Add the deptno input parameter with initial value 10.
 oradata1.Database.Parameters.Add "deptno", 10, 1

 'Refresh the data control.
 oradata1.Refresh

 MsgBox "Employee #" & oradata1.Recordset.fields("empno") & ", Job=" & _
                   oradata1.Recordset.fields("job")

 'Only employees with job=MANAGER will be contained in the dynaset.
'Turn off Automatic parameter binding.
 oradata1.AutoBinding = False

 'Change the value of the job parameter to SALESMAN.
 oradata1.Database.Parameters("job").Value = "SALESMAN"

 'Refresh ONLY the recordset.
 oradata1.Recordset.Refresh

 MsgBox "Employee #" & oradata1.Recordset.fields("empno") & ", Job=" & _
               oradata1.Recordset.fields("job")

 'The query will still execute even with AutoBinding=False
 'because the dynaset has not been re-created.
 'Set the RecordSource and use a SQL parameter for deptno.
 oradata1.RecordSource = "select * from emp where deptno = :deptno"

 On Error GoTo paramerr
 'Attempt to refresh the data control. An error should occur, because
 ' AutoBind=False, the SQL statement contains a parameter, and the
 'SQL statement needs to be bound before execution.
 oradata1.Refresh

Exit Sub

paramerr:
 MsgBox oradata1.Database.Session.LastServerErrText
Exit Sub

End Sub

BackColorプロパティ

適用対象

Oracle Data Control

説明

オブジェクトの背景色を決定します。


関連項目:

ForeColorプロパティ


Captionプロパティ

適用対象

Oracle Data Control

説明

コントロール内またはコントロール横に表示されるテキストを決定します。


Connectプロパティ

適用対象

Oracle Data Control

説明

データ・コントロールをOracleデータベースに接続するときに使用されるユーザー名およびパスワード。設計時および実行時に読取り/書込みができます。

使用方法

oradata1.Connect = [ username/password

備考

この文字列は、コントロールがリフレッシュされるときにOraSessionオブジェクトのOpenDatabaseメソッドに渡されます。このプロパティへの変更は、Refreshメソッドがデータ・コントロールに送信された後に有効になります。

データ・コントロールをリフレッシュしても、Connectプロパティが指定されていない場合は、リフレッシュは失敗します。

有効なConnectプロパティの例は次のとおりです。

"scott/tiger"
"system/manager"

データ型

String


Databaseプロパティ

適用対象

Oracle Data Control

説明

データ・コントロールに関連付けられているOraDatabaseオブジェクトを戻します。設計時には使用できません。実行時は読取り専用です。

使用方法

oradatabase = oradata1.Database

備考

データ・コントロールがリフレッシュされていない場合に、このプロパティを参照すると、オブジェクト変数が設定されていませんというランタイム・エラーが発生します。

このプロパティへの変更は、Refreshメソッドがデータ・コントロールに送信された後に有効になります。

データ型

OLEオブジェクト(OraDatabase)


DatabaseNameプロパティ

適用対象

Oracle Data Control

説明

データ・コントロールをOracleデータベースに接続するときに使用されるOracle SQL*Net指定子プロパティ。設計時および実行時に読取り/書込みができます。

使用方法

oradata1.DatabaseName = [ DatabaseName ]

備考

このOracle SQL*Net指定子には、Oracle SQL*Netプロトコル識別子、Oracleデータベース名、およびオプションのデータベース・インスタンスを含める必要があります (SQL*Netの別名も使用できます)。この文字列は、コントロールがリフレッシュされるときにOraSessionオブジェクトのOpenDatabaseメソッドに渡されます。このプロパティへの変更は、Refreshメソッドがデータ・コントロールに送信された後に有効になります。

データ・コントロールをリフレッシュしても、DatabaseNameプロパティが指定されていない場合は、リフレッシュは失敗します。

有効なDatabaseNameプロパティの例は次のとおりです。

"t:oracle:PROD"
"p:Oracle10:demo"
"x:orasrv"
"mydbalias"(Where mydbalias represents "t:mfg:prod")

データ型

String


DirtyWriteプロパティ

適用対象

Oracle Data Control

説明

UpdateおよびDeleteで、読取り一貫性をチェックするかどうかを決定します。

使用方法

oradata1.DirtyWrite = [ True | False ]

データ型

Integer(ブール)

備考

デフォルトでは、DirtyWriteFalseです。つまり、基となるレコードセット/ダイナセット・オブジェクトに対するUpdateおよびDelete操作では読取り一貫性が維持されます。このプロパティへの変更は、Refreshメソッドがデータ・コントロールに送信された後に有効になります。


DragIconプロパティ

適用対象

Oracle Data Control

説明

ドラッグ・アンド・ドロップ操作で、ポインタとして表示するアイコンを決定します。


DragModeプロパティ

適用対象

Oracle Data Control

説明

ドラッグ・アンド・ドロップ操作の手動または自動ドラッグ・モードを決定します。


EditModeプロパティ

適用対象

Oracle Data Control

説明

現在の行の現在の編集状態を戻します。設計時には使用できません。実行時は読取り専用です。

使用方法

edit_mode = oradata1.EditMode

備考

使用可能なEditModeプロパティ値は次のとおりです。

定数 説明
ORADATA_EDITNONE 0 現在編集中ではありません。
ORADATA_EDITMODE 1 既存行に対して編集が進行中です。
ORADATA_EDITADD 2 新規レコードを追加中のため、コピー・バッファは現在、データベース内の実際の行を表していません。

これらの値はoraconst.txtファイル内にあり、Visual Basicのoraconst.txtファイル内にある類似の定数と一致するようになっています。

このプロパティは、EditAddNewおよびUpdateメソッドからのみ影響を受けます。

データ型

Integer


Enabledプロパティ

適用対象

Oracle Data Control

説明

コントロールがユーザー生成イベントに応答可能かどうかを決定します。


関連項目:

Visibleプロパティ


Fontプロパティ

適用対象

Oracle Data Control

説明

データ・コントロールに表示されるテキストに使用するフォント・オブジェクトを決定します。

使用方法

Oradata1.Font.Bold = True

ForeColorプロパティ

適用対象

Oracle Data Control

説明

オブジェクト内のテキストおよび図の表示に使用する前景色を決定します。


関連項目:

BackColorプロパティ


Heightプロパティ

適用対象

Oracle Data Control

説明

オブジェクトの高さを決定します。


Indexプロパティ

適用対象

Oracle Data Control

説明

コントロール配列内のコントロールを一意に識別する番号を指定します。コントロールがコントロール配列の一部である場合のみ、設計時に使用できます。実行時は読取り専用です。


関連項目:

Tagプロパティ



Leftプロパティ

適用対象

Oracle Data Control

説明

オブジェクトの輪郭線の左端と、それを含むコンテナの左端との距離を決定します。


MousePointerプロパティ

適用対象

Oracle Data Control

説明

実行時、フォームまたはコントロールの特定部分にマウスが存在するときに表示されるマウス・ポインタのタイプを決定します。


Nameプロパティ

適用対象

Oracle Data Control

説明

フォーム、コントロールまたはデータ・アクセス・オブジェクトを識別するために、コードで使用する名前を指定します。実行時には使用できません。


NoRefetchプロパティ

適用対象

Oracle Data Control

説明

デフォルトでは、NoRefetchFalseです。つまり、Oracle Databaseで設定するデフォルトのデータ・セットは、ローカル・キャッシュへ再フェッチされません。 ORADB_NO_REFETCHオプションがTrueの場合、デフォルトでは、基となるレコードセットまたはダイナセットは、このプロパティを継承します。

このプロパティへの変更は、Refreshメソッドがデータ・コントロールに送信された後に有効になります。

使用方法

oradata1.NoRefetch = [ True | False ]

データ型

Integer(ブール)


Optionsプロパティ

適用対象

Oracle Data Control

説明

データベース、およびデータ・コントロールに関連付けられているすべてのダイナセットについて1つ以上の特性を決定します。設計時および実行時に読取り/書込みができます。

使用方法

oradata1.Options = database_optionsdatabase_options = oradata1.Options

データ型

Long Integer

備考

このプロパティは、データベースのオプションのモードを設定するために使用されるビット・フラグ文字です。 options = 0の場合、デフォルトの設定が適用されます。使用可能なモードは次のとおりです。

Optionsプロパティのフラグ値

Optionsプロパティのフラグ値は次のとおりです。

定数 説明
ORADB_DEFAULT &H0& デフォルトの動作を使用します。
ORADB_ORAMODE &H1& Oracle Databaseによるデフォルトのフィールド(列)値の設定を許可します。
ORADB_NOWAIT &H2& SQLの"SELECT ...FOR UPDATE"文の実行時、行ロックで待機はしません。

これらの値は、oraconst.txtファイルにあります。オプションは、それぞれの値を追加することで組み合せることができます。

このプロパティは、OpenDatabaseメソッドに渡されるオプションと同じです。OpenDatabaseの場合と同様、これらのオプションは、OraDatabaseオブジェクト、およびそのデータベースから作成された関連ダイナセットすべてに影響します。

このプロパティへの変更は、Refreshメソッドがデータ・コントロールに送信された後に有効になります。


OracleModeプロパティ

適用対象

Oracle Data Control

説明

フィールド(列)への変更が、データベースからその変更行を取得することによって、ローカル・ミラーに即時反映されるかどうかを決定します。これにより、Oracleで列にデフォルトを設定し、必要な計算を実行できます。

使用方法

oradata1.OracleMode = [ True | False ]

データ型

Integer(ブール)

備考

このプロパティ値は、デフォルトではTrueに設定されます。つまり、フィールド(列)の変更は、即時にローカル・キャッシュに反映されます。このプロパティ値への変更は、Refreshメソッドの起動後に有効になります。 データベース・オプションとしてORADB_ORAMODEモードが使用される場合、基となるレコードセット/ダイナセットはこのモードを継承します。


ReadOnlyプロパティ

適用対象

Oracle Data Control

説明

読取り専用の操作にダイナセットを使用するかどうかを決定します。設計時および実行時に読取り/書込みができます。

使用方法

oradata1.ReadOnly = [ True | False ]

データ型

Integer(ブール)

備考

デフォルトでは、ReadOnlyFalseです。つまり、データベースからROWIDを選択すると、更新可能なダイナセットの作成が試行されます。ReadOnlyTrueに設定されている場合、更新不可能なダイナセットが作成され(ROWIDはデータベースから選択もキャッシュもされません)、操作は多少速くなります。

SELECT文にLONGまたはLONG RAW列が含まれている場合は、ダイナセットが更新可能かどうかに関係なく、ROWIDが必要です。

このプロパティへの変更は、Refreshメソッドがデータ・コントロールに送信された後に有効になります。


Recordsetプロパティ

適用対象

Oracle Data Control

説明

データ・コントロールのConnectDatabaseNameおよびRecordSourceプロパティによって定義されたダイナセットを戻します。設計時には使用できません。実行時に読取り/書込みができます。

使用方法

Set oradynaset = oradata1.RecordsetSet oradata1.Recordset = Oradynaset

データ型

OLEオブジェクト(OraDynaset

備考

このダイナセットのプロパティおよびメソッドは、他のダイナセット・オブジェクトの場合と同じです。Oracle Data Control(.OCX)のRecordsetプロパティは、外部のダイナセット、すなわち別のデータ・コントロールのRecordsetプロパティに設定できます。この設定を行った後、Oracle Data ControlのDatabase、SessionおよびOptionsのプロパティが、外部ダイナセットの対応するプロパティに設定されます。Oracle Data Controlでは、外部ダイナセットのアドバイス・オブジェクトが共有されます。これは、CreatePlsqlDynasetメソッドでPL/SQLカーソルから戻されたダイナセットを添付する場合に役立ちます。

この例では、CreatePlsqlDynasetメソッドで作成された外部ダイナセットに対するRecordsetプロパティの設定を示します。この例では、PL/SQLカーソルを、DEPTNOパラメータの様々な値を含む外部ダイナセットとして戻します。対応するストアド・プロシージャ(EMPCUR.SQLにある)が、Oracle Databaseから利用可能であることを確認してください。このコードを、oradata1という名前のOracle Data Controlを含むフォームの定義セクションにコピーします。次に[F5]を押します。


Sub Form_Load ()

 'Declare variables as OLE Objects.
 Dim OraSession As OraSession
 Dim OraDatabase As OraDatabase
 Dim OraDynaset As OraDynaset

 'Create the OraSession Object.
 Set OraSession = CreateObject("OracleInProcServer.XOraSession")

 'Create the OraDatabase Object by opening a connection to Oracle.
 Set OraDatabase = OraSession.OpenDatabase("ExampleDb", "scott/tiger", 0&)

' Create the Deptno parameter
 OraDatabase.Parameters.Add "DEPTNO", 10, ORAPARM_INPUT

 OraDatabase.Parameters("DEPTNO").ServerType = ORATYPE_NUMBER

' Create OraDynaset based on "EmpCursor" created in stored procedure.
 Set OraDynaset = OraDatabase.CreatePLSQLDynaset("Begin Employee.GetEmpData (:DEPTNO,:EmpCursor); end;", "EmpCursor", 0&)

' Now attach the Oradynaset to Data control's recordset.
  set oradata1.recordset = OraDynaset

...
'  Do some operation
...

 ' Now set the deptno value to 20
 OraDatabase.Parameters("DEPTNO").Value = 20

 'Refresh the sqlstmt
 Oradata1.recordset.Refresh

  'Remove the parameter.
 OraDatabase.Parameters.Remove ("DEPTNO")

 End Sub


RecordSourceプロパティ

適用対象

Oracle Data Control

説明

データ・コントロールのRecordSetを作成するために使用されるSQL SELECT文。設計時および実行時に読取り/書込みができます。

使用方法

oradata1.RecordSource = [ SQL SELECT Statement ]

データ型

String

備考

SQL文は、SELECT文である必要があります。そうでない場合は、エラーが戻されます。表、ビュー、シノニム、列の別名、スキーマ参照、表の結合、ネストされたSelect文、およびリモート・データベース参照などの機能は自由に使用できます。どの方法でもオブジェクト名は変更されません。

結果のダイナセットが更新可能かどうかは、Oracle SQLの更新可能性規則、付与されているアクセス権、およびReadOnlyプロパティによって決まります。更新可能にするには、次の3つの条件を満たす必要があります。

  1. SQL文が単純な列リストまたは列リスト全体(*)を参照すること。

  2. SQL文でオプション引数の読取り専用フラグを設定しないこと。

  3. Oracleで、問合せで選択された行へのROWID参照を許可していること。

これらの条件を満たさないSQL文でも処理されますが、その結果は更新可能ではなく、ダイナセットのUpdatableプロパティでFalseが戻されます。

このプロパティへの変更は、Refreshメソッドがデータ・コントロールに送信された後に有効になります。

SQLのバインド変数は、OraParametersコレクションと組み合せて使用できます。

このプロパティがNULLまたは空の場合、OraDynasetオブジェクトは作成されませんが、データ・コントロール用にOraSessionOraConnectionおよびOraDatabaseオブジェクトが作成されます。この動作により、ダイナセットの作成の前に、これらのオブジェクトへのアクセスが可能になります。たとえば、NULL RecordSourceを使用し、データベース・オブジェクトをインスタンス化してパラメータを追加できます。その後、RecordSourceプロパティを、データベース・パラメータの自動バインディングを使用して実行時に設定できます。

このプロパティの変更およびRecordSetプロパティのRefreshメソッドのコールにより、新規のダイナセット・オブジェクトが作成されますが、古いダイナセットも、そのダイナセットへの参照がすべて削除されるまで、引き続き使用できます。

この例では、データ・コントロールのRecordSourceプロパティのSQLバインド変数(パラメータ)の使用方法を示します。この例を実行するには、oradata1という名前のデータ・コントロールを含むフォームの定義セクションにコードをコピーし、その後[F5]を押します。

Sub Form_Load ()

 'Set the username and password.
 oradata1.Connect = "scott/tiger"

 'Set the databasename.
 oradata1.DatabaseName = "ExampleDb"

 'Refresh the data control without setting the
 ' RecordSource. This has the effect of creating

 ' the underlying database object so that parameters  may be added.
 oradata1.Refresh

 'Set the RecordSource and use a SQL parameter.
 oradata1.RecordSource = "select * from emp where job = :job"

 'Add the job input parameter with initial value MANAGER.
 oradata1.Database.Parameters.Add "job", "MANAGER", 1

 'Refresh the data control.
 'Only employees with the job MANAGER will be contained in the dynaset.
 oradata1.Refresh

 'Change the value of the job parameter to SALESMAN.
 oradata1.Database.Parameters("job").Value = "SALESMAN"

 'Refresh ONLY the recordset.
 'Only employees with the job SALESMAN will be contained in the dynaset.
 oradata1.Recordset.Refresh

End Sub


Sessionプロパティ

適用対象

Oracle Data Control

説明

データ・コントロールに関連付けられているセッション・オブジェクト。設計時には使用できません。実行時は読取り専用です。

使用方法

orasession = oradata1.Session

データ型

OLEオブジェクト(OraSession

備考

このプロパティは、oradata1.Database.Sessionの参照と同等です。データ・コントロールがリフレッシュされていない場合に、このプロパティを参照すると、オブジェクト変数が設定されていませんというランタイム・エラーが発生します。


Tagプロパティ

適用対象

Oracle Data Control

説明

アプリケーションで必要となる追加のデータを格納します。


Topプロパティ

適用対象

Oracle Data Control

説明

オブジェクトの輪郭線の上端と、それを含むコンテナの上端との距離を決定します。


TrailingBlanksプロパティ

適用対象

Oracle Data Control

説明

データベースから取得された文字列データから、後続のブランクを取り除くかどうかを決定します。設計時および実行時に読取り/書込みができます。

使用方法

oradata1.TrailingBlanks = [ True | False ]

データ型

Integer(ブール)

備考

デフォルトでは、TrailingBlanksFalseです。つまり、データベースから取得された文字列データから後続のブランクが取り除かれます。

このプロパティへの変更は、Refreshメソッドがデータ・コントロールに送信された後に有効になります。


Visibleプロパティ

適用対象

Oracle Data Control

説明

オブジェクトの表示、非表示を決定します。


関連項目:

Enabledプロパティ


Widthプロパティ

適用対象

Oracle Data Control

説明

オブジェクトの幅を決定します。