Base データの読込み |
---|
戻 る |
テーブルのデータをマクロで読み込む場合、 まず、条件に当てはまるデータが存在するかを調べ、 データが存在するとき、
| |
[レコードの位置]
| |
レコードの位置を示す用語として「カーソル」があります。 結果セットを取得した当初、カーソルは先頭レコードの前(BeforeFirst)にあります。 結果セットにデータがあるときは、next()メソッドで 先頭~最終までの移動できます。 (移動に成功すると、next()メソッドはTrueを返します。) (Nullでない)結果セットに「データがない」(レコード件数が0)状態で、 現在のカーソル位置を確認するメソッドを使うと、 isBeforeFirst()、isAfterLast()がともに True を返します。 データがないとき、カーソルは最終レコードの次(AfterLast)も指しています。 next()を行うと、移動できないため、Falseを返します。 | |
[レコードの移動] | |
  |
次のメソッドが用意されています。 next() 次のデータレコードへ移動。 previous() 前のデータレコードへ移動。 first() 最初のデータレコードへ移動。 last() 最後のデータレコードへ移動。 beforeFirst() 最初のデータレコードの前へ移動。 afterLast() 最後のデータレコードの次へ移動。 初期値では、next()メソッドのみ使用可能。 変更するには、Statement.ResultSetTypeに SCROLL_INSENSITIVE または SCROLL_SENSITIVE を指定する。 Statement.ResultSetType = 1004 Statement.ResultSetType = 1005 FORWARD_ONLY 1003 [初期値] SCROLL_INSENSITIVE 1004 ResultSet にすべてのナビゲーションを許可する。 オリジナルデータへの変更は記録しない。 SCROLL_SENSITIVE 1005 ResultSet にすべてのナビゲーションを許可。 オリジナルデータへの変更による ResultSet への影響を認める。 |
[フィールド名からデータを取得する] | |
フィールド番号からデータを取得する関数は用意されています。 dstr = resultset.getString([フィールドNo]) フィールド名からフィールド番号を取得する関数もあります。 fldindex = resultset.findColumn("[フィールド名]") この2つの関数を組み合わせてフィールド名からデータを取得できます。 dstr = resultset.getString(resultset.findColumn("[フィールド名]")) | |
[レコード件数] | |
  |
結果セットのプロパティに「レコード件数」に該当するものは
用意されていないため、 集約関数count()を用いて件数を取得します。 sqlstr = "Select Count(*) from [Table名] where ~" Rem フィールド番号を入れて、 dstr = ResultSet.getString(1) recs = CLng(dstr) LibreOffice 4.1.X~4.2.Xの場合、「AS エイリアス」句を使用可能 sqlstr = "Select Count([フィールド名]) as RecCount from [Table名] where ~" fldindex = ResultSet.findColumn("RecCount") dstr = ResultSet.getString(fldindex) recs = CLng(dstr) Baseのマニュアルには、「関数」の項で、 「SQLステートメントでは対象となる関数を次のように呼び出します。」 いくつか構文例が示されていて、その中に SELECT FUNCTION() AS エイリアス FROM table とあるのですが、LibreOffice 4.3、4.4では、エイリアス句を使うと 「Basic ランタイムエラー」が出ました。 エラーは、count()とエイリアスの間に「演算子がない」、というもので、 SQL文をエイリアス句として解析していないのです。(2015/08/12現在) |
フィールド名からデータを取得する | ||||||
| ||||||
フィルターに対応するレコード件数を取得する | ||||||
| ||||||
戻 る |