QuerySQLはSQLを実行してレコードを取得する重要なメソッドです。以下のようなテーブル(テーブル名「TABLE1」)に接続する場合を例に解説します。 
  
ID 
 | 
TESTNAME 
 | 
TESTRESULT 
 | 
TESTTIME 
 | 
 
1 
 | 
Test1 
 | 
T 
 | 
2005/1/1 12:30:00 
 | 
 
2 
 | 
Test2 
 | 
F 
 | 
2005/1/1 14:25:00 
 | 
 
3 
 | 
Test3 
 | 
T 
 | 
2005/1/1 15:15:00 
 | 
 
 
 
  
  
  
 | 
var vFieldNum, vRecordNum, vFieldName, vFieldType, vData;
if (!this.QuerySQL("SELECT * FROM TABLE1", vFieldNum, vRecordNum, vFieldName, vFieldType, vData))
{
 ::OpenMsg(this.GetLastError());	// 失敗した場合はGetLastErrorでエラーコメントを表示
 return;
}
 | 
 
 
 
  
 | 
 
 
 
  
上例のように、SQL文"SELECT * FROM TABLE1"を、QuerySQLメソッドによってデータベースに問い合わせます。 
処理が成功すると「vFieldNum, vRecordNum, vFieldName, vFieldType, vData」にテーブルの情報が格納されます。 
  
  
vFieldNum 
 | 
フィールド数、4が格納されます。 
 | 
 
vRecordNum 
 | 
レコード数、3が格納されます。 
 | 
 
vFieldName 
 | 
データベースで定義したフィールド名がc("ID", "TESTNAME", "TESTRESULT", "TESTTIME")のように格納されます。 
 | 
 
vFieldType 
 | 
各フィールドのSQLタイプがc(4, 12, 4, -7, 11)のように格納されます。 
 | 
 
vData 
 | 
以下を参照下さい。 
 | 
 
 
 
  
  
vDataには全レコードの内容が2次元配列(vData[列, 行])で格納されます。 
スクリプトのcキーワードであらわすと以下のようになります。 
  
  
  
 | 
c( c(1,2,3),
   c(“Test1”,”Test2”,”Test3”),
   c(T,F,T),
   c(#2005/1/1 12:30:00#, #2005/1/1 14:25:00#, #2005/1/1 15:15:00#));
 
 | 
 
 
 
  
 | 
 
 
 
  
各セルのデータを抜き出すには以下のように配列のインデックスを指定します(インデックスや行列は0から数えます)。 
  
vData[列, 行] 
  
  
 | 
var a = vData[0,0];  // 0列0行目のデータ(1)
var a = vData[0,1];  // 0列1行目のデータ(2)
var a = vData[1,2];  // 1列2行目のデータ("TEST3")
 
 | 
 
 
 
  
 | 
 
 
 
  
特定の列のデータを配列から抜き出すには以下のようにします。 
  
  
  
 | 
var a = vData[0, ];   // 0列目の全データ
var a = vData[1, ];   // 1列目の全データ
 
 | 
 
 
 
  
 | 
 
 
 
  
特定の行のデータを配列から抜き出すには以下のようにします。 
  
  
  
 | 
var a = vData[, 1];   // 1行目の全データ
var a = vData[, 2];   // 2行目の全データ
 
 | 
 
 
 
  
 | 
 
 
 
  
そのほか、スクリプトでは様々な配列の扱いができます。以下は例です。 
  
  
  例 
例1) vData[0, ]は0列目、つまりc(1,2,3)になります。 
  
例2) ::Math.Ave(vData[0, ])は0列目の平均値、つまり2になります。 
  
例3) vData [c(1,2), ]は0列目と2列目、つまり以下になります。 
  
 | 
c( c(“Test1”,”Test2”,”Test3”),
   c(T,F,T) );
 
 | 
 
 
 
  
例4) vData [c(2,1), ]は2列目と1列目、つまり以下になります。 
  
 | 
c( c(T,F,T),
   c(“Test1”,”Test2”,”Test3”) );
 
 | 
 
 
 
  
例5) vData [c(1,1) , ]は1列目と1列目、つまり以下になります。 
  
 | 
c( c(T,F,T),
   c(“Test1”,”Test2”,”Test3”) );
 
 | 
 
 
 
  
例6) vData [ , vData [3, ] > #2005/1/1 14:00:00#]は「2005/1/1 14:00:00」以降のレコードを取得します。 
  
例7) ::Math.Ave(vData [0 , vData [3, ] > #2005/1/1 14:00:00#])は、「2005/1/1 14:00:00」以降のレコードを取得し、平均値を求めます。つまりc(2,3)の平均値、2.5になります。 
  
 | 
c( c(2,3),
   c(”Test2”,”Test3”),
   c(F,T),
   c(”#2005/1/1 14:25:00#”,”#2005/1/1 15:15:00#”) );
 
 | 
 
 
 
  
 | 
 
 
 
  
  
 | 
::Mathメソッドはテーブルのデータを集計するのに便利です。例えば以下は各フィールドの平均値や合計、最大値などを求めます。 
::Mathメソッドについては本マニュアルのルートメソッドを参照下さい。 
  
var a = ::Math.Ave(vData);        //平均値 
var a = ::Math.Sum(vData);         //合計値 
var a = ::Math.Max(vData);         //最大値 
var a = ::Math.Min(vData);         //最小値 
  
 | 
 
 
 
  
 |