データベーステーブル
データベーステーブルとの作業は、テストにデータベースを使用する一部です。テーブル式とデータベーステーブルプロパティを使用してデータベーステーブルの内容にアクセスし、それらを操作します。
SenseTalkは、以下のセクションで文書化されているように、直接データベースおよびExcelファイルと対話できます。ただし、SQLを使用してデータ を操作することを好む場合は、SQLを直接実行するを参照してください。
テーブル式
データベース内のデータを操作するには、その名前で作業するテーブルを指定する必要があります。これは_Table_式を使用して行われます。データベース接続も定義する必要があります。データベースへの接続の定義方法については、データベース接続を参照してください。
テーブル式を使用すると、必要に応じてデータベースへの接続が確立され、テーブルに関する情報が収集されますが、テーブルからのデータは取得されません。テーブルの_records_が要求されたときにデータが取得されます。
is a table演算子は、あなたが実際にテーブルで作業してい ることをいつでも確認するために使用できます。
テーブル式
**Behavior:**テーブル式を使用すると、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プロパティ
Values: カラム名またはカラム名のリスト。
Default: True.
Behavior: columnsToFetchをカラム名のリストに設定して、それらのカラムのみを取得します。その後のレコードの取得は、指定 されたカラムの内容のみを取得し、他のカラムは返さない。 columnsToFetchが空(デフォルト)の場合、データベースによってテーブルに定義されたすべてのカラムが取得されます。
例:
set the columnsToFetch of myTable to ["name","memberNum"]
recordPrototypeプロパティ
Value: Boolean.
Default: 空。 (デフォルトのプロトタイプはありません。)
Behavior: 取得したすべてのレコードのプロトタイプとなるオブジェクトに設定します。各レコードは、new object表現を使用して作成するのと同じ方法で、プロトタイプオブジェクトのインスタンスとして作成されます。これは、取得したすべてのレコードに追加の動作を提供するために使用できます。レコードについての詳細情報は、レコード vs プロパティリストをご覧ください。
例:
set myTable's recordPrototype to AccountRecord
autoSaveUpdatesプロパティ
Value: Boolean.
Default: True.
Behavior: yesまたはnoに設定して、the autoSaveDatabaseUpdatesグローバルプロパティをオーバーライドします。
例:
set myTable.autoSaveUpdates to false
useRecordIteratorプロパティ
Value: Boolean.
Default: Off.
Behavior: 可能な場合にレコードイテレータを返すために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テーブルを正しく識別しました!"とログに記録する -- 指定されたデータベースに実際に存在するテーブルであることを確認します