データベーステーブル
データベーステーブルとの作業は、テストにデータベースを使用する一部です。テーブル式とデータベーステーブルプロパティを使用してデータベーステーブルの内容にアクセスし、それらを操作します。
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テーブルを正しく識別しました!"とログに記録する -- 指定されたデータベースに実際に存在するテーブルであることを確認します