メインコンテンツまでスキップ
バージョン:23.3

データベーステーブル

データベーステーブルとの作業は、テストにデータベースを使用する一部です。テーブル式とデータベーステーブルプロパティを使用してデータベーステーブルの内容にアクセスし、それらを操作します。

SenseTalkは、以下のセクションで文書化されているように、直接データベースおよびExcelファイルと対話できます。ただし、SQLを使用してデータを操作することを好む場合は、SQLを直接実行するを参照してください。

テーブル式

データベース内のデータを操作するには、その名前で作業するテーブルを指定する必要があります。これは_Table_式を使用して行われます。データベース接続も定義する必要があります。データベースへの接続の定義方法については、データベース接続を参照してください。

テーブル式を使用すると、必要に応じてデータベースへの接続が確立され、テーブルに関する情報が収集されますが、テーブルからのデータは取得されません。テーブルの_records_が要求されたときにデータが取得されます。

ノート

is a table演算子は、あなたが実際にテーブルで作業していることをいつでも確認するために使用できます。

テーブル式

**振る舞い:**テーブル式を使用すると、SenseTalkを使用してデータベース内のテーブルを参照できます。テーブル式を使用するには2つの方法があります:直接および変数に格納します。

文法:
table tableName [of | in | from] {database} dbIdentifier {{with} properties}

例:テーブル式を使用してテーブルを直接呼び出す

この例では、table式(table "Members" of myDB)を使用してデータベーステーブルを参照し、records式(the records of)を使用してテーブルからすべてのレコードを取得し、変数 CurrentMembersに格納します:

put the records of table "Members" of myDB into CurrentMembers -- テーブル "Members" のすべてのレコードを取得し、それらを変数 CurrentMembers に格納します。

例:テーブルオブジェクトを変数に格納する

この例は上記の例と同じことを行いますが、tableオブジェクトをmemberTableという名前の変数に格納することから始まります。 memberTableは、データベースのMembersテーブルに含まれる情報にアクセスするために使用できる_Table_オブジェクトです。この例の最初の行では、テーブルの内容はまだデータベースから取得されていません。 memberTableはテーブルとその列に関する情報を保持しているだけです。

set memberTable to table "Members" of myDB -- MemberTable変数を "Members" テーブルを参照するテーブルオブジェクトに設定します。まだレコードは取得していません。
put the records of memberTable into CurrentMembers -- テーブル "Members"(テーブルオブジェクト memberTable によって参照)のすべてのレコードを取得し、それらを変数 CurrentMembers に格納します。
ノート

ここでのコードの2行目は実際にレコードを取得していますが、最初の行はテーブルオブジェクト自体への参照を格納しており、まだレコードは取得していません。

例:テーブルプロパティを追加する

この例では、memberTable変数にテーブルオブジェクトを格納し、columnsToFetchテーブルプロパティを使用して興味のある列を指定し、その後、すべてのレコードを取得し、それらをCurrentMembers変数に格納します。

set memberTable to table "Members" of myDB -- MemberTableを"Members"テーブルを参照するテーブルオブジェクトに設定します。
set the columnsToFetch of memberTable to ["Name","ID Number","Expiration"] -- columnsToFetchテーブルプロパティを使用して興味のある列を指定します。
put the records of memberTable into CurrentMembers -- テーブル "Members"(テーブルオブジェクト memberTable によって参照される)のすべてのレコードの指定された列(Name、ID Number、Expiration)を取得し、それらを変数 CurrentMembers に格納します。

データベーステーブルプロパティ

これらのテーブルオブジェクトプロパティは、テーブルの動作を制御するために設定できます。他の任意のプロパティと同様に設定できます(プロパティを参照)が、特にデータベーステーブルオブジェクトに適用します。

columnsToFetchプロパティ

値: カラム名またはカラム名のリスト。

Default: True.

動作: columnsToFetchをカラム名のリストに設定して、それらのカラムのみを取得します。その後のレコードの取得は、指定されたカラムの内容のみを取得し、他のカラムは返さない。 columnsToFetchが空(デフォルト)の場合、データベースによってテーブルに定義されたすべてのカラムが取得されます。

例:

set the columnsToFetch of myTable to ["name","memberNum"]

recordPrototypeプロパティ

Value: Boolean.

デフォルト: 空。 (デフォルトのプロトタイプはありません。)

動作: 取得したすべてのレコードのプロトタイプとなるオブジェクトに設定します。各レコードは、new object表現を使用して作成するのと同じ方法で、プロトタイプオブジェクトのインスタンスとして作成されます。これは、取得したすべてのレコードに追加の動作を提供するために使用できます。レコードについての詳細情報は、レコード vs プロパティリストをご覧ください。

例:

set myTable's recordPrototype to AccountRecord

autoSaveUpdatesプロパティ

Value: Boolean.

Default: True.

動作: yesまたはnoに設定して、the autoSaveDatabaseUpdatesグローバルプロパティをオーバーライドします。

例:

set myTable.autoSaveUpdates to false

useRecordIteratorプロパティ

Value: Boolean.

Default: Off.

動作: 可能な場合にレコードイテレータを返すためにtrueに設定します。詳細情報は、データベーステーブルのレコードを反復処理するを参照してください。

例:

set the useRecordIterator of myTable to Yes

Is a Tableオペレータ

is a tableオペレータは、値がデータベーステーブルであるかどうかをテストするために使用できます。これは、データベースに接続するSenseTalkスクリプトをトラブルシューティングする際に便利です。

例:

set myExcelDB to {type:"excel",file:"~/Desktop/HotelData.xlsx"} -- プロパティリストにExcelファイルのパスとデータベースタイプを指定して、変数myExcelDBに格納してデータベース接続を定義します
myExcelDBの"Customers.2019.01"テーブルをCustomersに入れる -- テーブルの参照情報をCustomersという変数に格納します
もしCustomersがテーブルならば "Customersテーブルを正しく識別しました!"とログに記録する -- 指定されたデータベースに実際に存在するテーブルであることを確認します