このデザインは、ODBC データベースでクエリーを定義および実行するのに使用します。odbc_Database デザインと一緒に使用します。ODBC の「レコードセット」は、このデザインの各インスタンスの基礎になります。このデザインの追加メソッドを使用して、データベースから、実際のデータを抽出することができます。また、レコード数などのその他の情報も取得することができます。それぞれのクエリーには、モデルのこのデザインのインスタンスが 1 つ必要です。通常、各インスタンスは、odbc_Database のインスタンスを 1 つ参照します。
Name | [タイプ] | 説明 |
---|---|---|
SQLstatement | 文字列 | 基礎になるレコードセットの作成に使用する SQL ステートメントです。ユーザが完全なステートメントをこのパラメータに設定することも、ISL が個々のパラメータを使用してビルドすることもできます。 |
Name | [タイプ] | 説明 |
---|---|---|
database | パーツ | クエリーを実行するデータベースです。ODBC_Database のインスタンスにする必要があります。これは必須のパラメータです。 |
type | name | 作成するレコードセットのタイプです。既定値は :Dynaset です。基礎となるデータベース テーブルを読み書きするアクセスを提供します。サポートされる唯一のその他のオプションは :Snapshot で、読み込み専用です。 |
tableName | 文字列 | クエリー内で使用するテーブルまたはビューの名前です。SQLstatement パラメータを使用して完全な SQL クエリーを指定しない限り、このパラメータは必須です。Excel スプレッドシートの場合は、.xls ファイルの名前の付いた範囲になります。 |
fields | 文字列 | クエリーで返すフィールド(列)です。既定値は "*" で、テーブルのすべての列を意味します。 |
where | 文字列 | SQL の "where" 文字列で、テーブルから返す行をフィルタするのに使用します。既定値は "" で、フィルタがないことを意味します。 |
orderBy | 文字列 | SQL の "orderBy" 文字列で、クエリーで返された行を並べ替えるのに使用します。既定値は "" で、特に並べ替えないことを意味します。 |
reuse? | ブーリアン演算 | このフラグで、更新時のレコードセットの動作をコントロールします。reuse? を True にすると、更新後にシステムで同じ Recordset オブジェクトが再利用されます。システムの動作は、requeryOnUpdate? の値によって異なります。この動作は、最適なパフォーマンスになりますが、場合によっては、内部の SQL 文をコントロールするルールと同期されなかったり、データベースのデータに同期されない可能性(この可能性は常にあります)があります。reuse? を False にすると、システムは古い Recordset オブジェクトを閉じて解放し、新しいオブジェクトを作成して開きます。既定値は False です。 |
requeryOnUpdate? | ブーリアン演算 | True にすると、更新後にこのパーツが最初に要求されたときに、自動的に Requery 操作が実行されます。False にすると、データベースまたはパラメータの変更内容に関係なく、更新前と同じ状態の Recordset オブジェクトが再利用されます。このパラメータは、Reuse? パラメータが True の場合にのみ、意味を持ちます。既定値は、ダイナセットの場合は True で、それ以外の場合は False です。 |
updateOnUpdate? | ブーリアン演算 | ISL レコードセットを閉じたときに、レコードセットに対する未保存の変更(存在する場合)をデータベースに保存して戻すかどうかをコントロールします。既定値は False で、変更内容を保存しないことを意味します。変更内容を保存するには、Update()メソッドを使用します。 |
maxStringSize | 整数 | 終端の null バイトを含めて、文字列の最大サイズを定義します。既定の値は 1024 です。 |
Name | [タイプ] | 説明 |
---|---|---|
isBOF? | ブーリアン演算 | キャッシュなし。現在のレコードが最初のレコード(ある場合)であるかどうかを判定します。 |
isEOF? | ブーリアン演算 | キャッシュなし。現在のレコードが最後のレコード(ある場合)を超えているかどうかを判定します。 |
isEmpty? | ブーリアン演算 | キャッシュなし。レコードセットに行が含まれていないかどうかを判定します。この場合は、isBOF?: と isEOF?: は両方とも True になります。 |
addNew( Optional ignoreErrors? As Boolean = False ) As Boolean各フィールド(列)の値を指定しなくても、レコードセットに新しいレコード(行)を追加します。引数: * ignoreErrors?: True にすると、操作に失敗しても Intent 例外が発生しません。戻り値: 操作に成功すると True を返します。
addNewRecord( data As List, Optional ignoreErrors? As Boolean = False ) As Boolean各フィールドに対応するデータが記述されている一覧を取得し、レコードセットに新しいレコード(行)を追加し、各フィールド(列)にデータ一覧の対応する要素を設定し、データベースに恒久的に保存します。後で Update を呼び出す必要はありません。新しいレコードを表示するには、Requery メソッドを呼び出す必要があります。引数: * data: フィールドの順序で、適切に書式設定した各フィールドのデータです。フィールドの値を Name NoChange にすると、フィールド値は変更されませんが、既定値のまま保持されます。自動的に番号が付けられる[キー]フィールドの場合に特に役立ちます。各フィールドは、順番に設定されます。* ignoreErrors?: True にすると、操作に失敗しても Intent 例外が発生しません。戻り値: 操作に成功すると True を返します。
cancelUpdate( Optional ignoreErrors? As Boolean = False ) As Booleanupdate ()メソッドを使用してまだ保存されていない、レコードセットに対するすべての変更内容を破棄します。引数: * ignoreErrors?: True にすると、操作に失敗しても Intent 例外が発生しません。戻り値: 操作に成功すると True を返します。
delete( Optional ignoreErrors? As Boolean = False ) As Booleanデータベースから現在の行を削除します。引数: * ignoreErrors?: True にすると、操作に失敗しても Intent 例外が発生しません。戻り値: 操作に成功すると True を返します。
edit( Optional ignoreErrors? As Boolean = False ) As Boolean編集のために現在の行を「開きます」。引数: * ignoreErrors?: True にすると、操作に失敗しても Intent 例外が発生しません。戻り値: 操作に成功すると True を返します。
editRecord( data As List, _ Optional ignoreErrors? As Boolean = False ) As Boolean現在のレコードを修正して、変更内容を保存します。このメソッドは、よりプリミティブな edit()メソッドを呼び出し、指定されたデータを使用して行のすべてのフィールドを設定し、次に、変更内容を保存するのに update()メソッドを呼び出します。引数: * data: フィールドの順序で、適切に書式設定した各フィールドのデータです。フィールドの値を Name NoChange にすると、フィールド値は変更されませんが、既定値のまま保持されます。
自動的に番号が付けられる[キー]フィールドの場合に特に役立ちます。各フィールドは、順番に設定されます。* ignoreErrors?: True にすると、操作に失敗しても Intent 例外が発生しません。戻り値: 操作に成功すると True を返します。
findFirst( Optional value As Any = 0, _ Optional field As String = "", _ Optional ignoreErrors? As Boolean = False, _ Optional OnErrorReturn As Any = False ) As Booleanフィールドの内容が指定された値と等しい最初のレコード(行)を検索します。見つかった場合は、見つかったレコードを現在のレコードにして True を返します。見つからなかった場合は、現在のレコードは定義しないで False を返します。引数: * value: 検索する Intent の値です。* field: スキャンするフィールド(列)です。* ignoreErrors?: True にすると、操作に失敗しても Intent 例外が発生しません。* OnErrorReturn: エラーが発生した場合(および ignoreErrors?が True の場合)は、このパラメータは既定値を表します。戻り値: 操作に成功した場合は、True です。
getFieldNames( Optional ignoreErrors? As Boolean = False ) As Listレコードセット内のフィールド(列)の名前の一覧を返します。引数: * ignoreErrors?: True にすると、操作に失敗しても Intent 例外が発生しません。
getFieldValue( columnName As Any, _ Optional OnNullReturn As Any = Error, _ Optional ignoreErrors? As Boolean = False ) As Any現在のレコード内の指定されたフィールド(列)の値を返します。引数: * columnName: テーブル内のフィールドの名前、またはフィールドの整数インデックスです。* OnNullReturn: フィールドが空(null)の場合は、戻り値は、OnNullReturn 引数によってコントロールされます。この引数の既定値は :Error です。この値を指定した場合、Intent 言語例外を発生させます。* ignoreErrors?: True にすると、操作に失敗しても Intent 例外が発生しません。
getRecordCount( Optional fullCount? As Boolean = True, _ Optional ignoreErrors? As Boolean = False ) As Integerレコードセット内のレコード数を返します。引数: * fullCount: False に設定した場合、「現在まで」確認されているレコード数(つまり、「現在のレコード」ポインタの「最大値」)を取得することができます。* ignoreErrors?: True にすると、操作に失敗しても Intent 例外が発生しません。
getRecord( Optional OnNullReturn As Any = :Error, _ Optional ignoreErrors? As Boolean = False ) As List現在のレコードのすべてのフィールドの値を、一覧として返します。引数: * OnNullReturn: フィールドが空(null)の場合は、戻り値は、OnNullReturn 引数によってコントロールされます。この引数の既定値は :Error です。この値を指定した場合、Intent 言語例外を発生させます。この引数は、各フィールドの OnNullReturn 値を構成する一覧にすることができます。* ignoreErrors?: True にすると、操作に失敗しても Intent 例外が発生しません。
move( n As Integer, _ Optional ignoreErrors? As Boolean = False ) As Boolean現在のレコードを n レコード分移動します。引数: * n: レコード数です。この値には、基礎となるレコードセット タイプでサポートしている場合は、負の値を設定することができます。* ignoreErrors?: True にすると、操作に失敗しても Intent 例外が発生しません。戻り値: 操作に成功すると True を返します。
moveFirst( Optional ignoreErrors? As Boolean = False ) As Boolean最初のレコード(存在する場合)を指すように、現在のレコードを移動します。引数: * ignoreErrors?: True にすると、操作に失敗しても Intent 例外が発生しません。戻り値: 操作に成功すると True を返します。
moveLast( Optional ignoreErrors? As Boolean = False ) As Boolean最後のレコード(存在する場合)を指すように、現在のレコードを移動します。引数: * ignoreErrors?: True にすると、操作に失敗しても Intent 例外が発生しません。戻り値: 操作に成功すると True を返します。
moveNext( Optional ignoreErrors? As Boolean = False ) As Boolean現在のレコードのポインタを 1 レコード前に移動します。引数: * ignoreErrors?: True にすると、操作に失敗しても Intent 例外が発生しません。戻り値: 操作に成功すると True を返します。
movePrev( Optional ignoreErrors? As Boolean = False ) As Boolean現在のレコードのポインタを 1 レコード後ろに移動します。引数: * ignoreErrors?: True にすると、操作に失敗しても Intent 例外が発生しません。戻り値: 操作に成功すると True を返します。
requery( Optional ignoreErrors? As Boolean = False ) As Boolean実際のデータベースでクエリーを再実行します。これまでにキャッシュされた値のバインドは解除しません。将来のメソッド呼び出しのみに影響します。引数: * ignoreErrors?: True にすると、操作に失敗しても Intent 例外が発生しません。戻り値: 操作に成功すると True を返します。
SetFieldValue( columnName As Any, _ value As Any, _ Optional ignoreErrors? As Boolean = False ) As Boolean現在のレコードの columnName 値を指定された値に設定します。直前に AddNew()または Edit()を呼び出しておく必要があります。この変更内容を保存するには update()を呼び出す必要があります。引数: * columnName: テーブル内のフィールドの名前、またはフィールドの整数インデックスです。* value: 設定する Intent の値です。* ignoreErrors?: True にすると、操作に失敗しても Intent 例外が発生しません。戻り値: 操作に成功すると True を返します。
Update( Optional ignoreErrors? As Boolean = False ) As Booleanすべての変更内容をデータベースに保存して戻します。引数: * ignoreErrors?: True にすると、操作に失敗しても Intent 例外が発生しません。戻り値: 操作に成功すると True を返します。
<テーブル名およびオプション> は、fields、tableName、where、orderBy ルールに基づいて SELECT ステートメントを構築します。
基礎となる SQL クエリーが変更されていない場合は、プロジェクト ツリー内のパーツとして Recordset を使用すると、適切に動作します。しかし、開いているレコードセットの数が Access の強制する物理的な制限(およそ 250)を超えた場合に問題が発生します。データベース接続を使用してこの問題を解決するには、デザインの代わりに、odbc_Recordset* 関数を使用する必要があります。基本的なプロセスは次のとおりです。レコードセットを開き、データを読み、レコードセットを閉じます。ODBC ドライバは、最初に失敗するまで、非常に多くの接続を割り当てるため、レコードセットを閉じることは非常に重要です。これを実装するには、次のような対応が可能です。db: という名前のデータベース デザインを作成したと仮定します。次のようなメソッドでデータにアクセスすることができます。Method GetDBData( sql As String) As List Dim recSet As Any = odbc_RecordsetOpen(db, :snapshot, sql) ' access the data ' ... おそらく、次のレコードによく似ています。rule formula ' close recordset odbc_recordsetClose(recSet) ' # this is important! ' return valueEnd Method すべての Recordset パーツは、代わりに GetDBData:( )を呼び出すルールに置き換えることができます。これにより、多数のレコードセットが同時に(または長時間にわたって)開かれてコストが高くなるのを防ぐことができます。