SelectDB関数
オープンしているデータベース内のテーブルからデータを検索する関数です。
書式
SelectDB(#データベース番号,テーブル名,Select条件,Sort方法)
パラメーター
- データベース番号
- OpenDBで指定したデータベース番号 (501~508の整数値)を指定します。
- テーブル名
- データ検索を行うテーブル名を指定します。ファイル番号で指定されたデータベースの種別がExcelブックの場合、Excelシートまたは名前をつけたテーブルを指定します。Excelシートを指定する場合、シート名の後ろに$をつけ、[]で囲みます。Excelシート内の名前で指定した領域を指定する場合、名前を[]で囲みます。
- Select条件
- 検索条件を指定します。AND, ORを使用して複合条件を指定できます。検索条件を指定しない場合、テーブルの全データが検索されます。
- Sort方法
- 検索したデータを抽出する順番を指定します。SortキーとSort順番(昇順[ASC]/降順[DESC])を指定します。Sort順番を省略した場合、Sortキーの昇順を指定したことになります。Sort方法を省略した場合、オープンされているデータベースにより、順番は決定されます。
戻り値
検索された行の総数を返します。
解説
オープンされたデータベースの指定されたテーブルからSelect条件に一致するデータをSort条件によりSortします。
Input#, Print#によりデータの読み込み、書き込みを行う前に必ず実行する必要があります。
オープンされたデータベースがExcelブックの場合、シートおよび名前で定義された領域の1行目は検索に使用する列名として読み込まれ、データとしては使用されません。
1枚のシートに複数のテーブルが存在する場合は、シート内のテーブルを正常に読み込みできません。それぞれのテーブルの領域に名前を付けて、名前で定義された領域として指定してください。
注意
RC+ がインストールされているPCの接続が必要です
参照
OpenDB, CloseDB, UpdateDB, DeleteDB, Input #, Print #
SelectDB関数使用例
SQLデータベースを使用した例
下記に、SQL サーバー2000のサンプルデータベースNorthwindのテーブルEmployeesからTitleOfCourtesyがMs.のデータをEmployeeIDの降順に読み込む簡単な例を示します。
Integer count, i, eid
String Lastname$, Firstname$, Title$
OpenDB #501, SQL, "(LOCAL)", "Northwind"
count = SelectDB(#501, "Employees", "TitleOfCourtesy = 'Ms.'", "EmployeeID DESC")
For i = 0 To count - 1
Input #501, eid, Lastname$, Firstname$, Title$
Print eid, ",", Lastname$, ",", Firstname$, ",", Title$
Next
CloseDB #501
Accessデータベースを使用した例
下記に、Microsoft Access 2007のサンプルデータベース生徒名簿のテーブル生徒から役職が組長のデータをIDの昇順に読み込む簡単な例を示します。
Integer count, i, eid
String Lastname$, Firstname$, dummy$
OpenDB #502, Access, "c:\MyDataBase\生徒名簿.accdb"
count = SelectDB(#502, "生徒", "役職 = '組長'", "ID")
For i = 0 To count - 1
Input #502, eid, dummy$, dummy$, Lastname$, dummy$, Firstname$
Print eid, ",", Lastname$, ",", Firstname$
Next
CloseDB #502
Excelブックを使用した例
下記に、RC+8.0に付属するサンプルプロジェクト「DrawEpsonLogo」内のExcelブックEPSON_LOGO.xlsのLOGOシートから、X座標が220より大きいデータをPointの昇順に読み込む簡単な例を示します。
例で使用しているExcelブックは、以下を参照してください。
サンプルファイル
Integer count, i, p, x, y
String desc$
OpenDB #501, Excel, "C:\EpsonRC80\projects\Samples\Database\DrawEpsonLogo\EPSON_LOGO.xls"
count = SelectDB(#501, "[LOGO$]", "X > 220", "Point ASC")
For i = 0 To count - 1
Input #501, p, x, y, desc$
Print "Point", p, ", X:", x, ", Y:", y, ", Descripption:", desc$
Next
'出力結果
'Point 1, X: 224, Y: 51, Descripption:N1
'Point 2, X: 224, Y: 0, Descripption:N2
'Point 11, X: 224, Y: 51, Descripption:N11
← Select...Send Sense →