Tutorials and Guide to Samples (v11)

レッスン 3:Visual Basic で ODBC を使用する

SQL を使用して選択する

  1. この例を実行するために必要なツールを選択します。

(このプログラムを実行するには、[プロジェクト|コンポーネント]で "Microsoft Data Bound Grid Control 5.0" および "Microsoft RemoteData Control 5.0" が選択されている必要があります。また、[プロジェクト|参照設定]では、"Microsoft Remote Data Object 2.0"、"Remote Data Bound Grid Control 5.0"、"Microsoft RemoteData Control 5.0" がすべて選択されている必要があります。)


メモ

Remote Data Control を使用するには、Microsoft Visual Basic Enterprise Edition 5.0 を使用する必要があります。


  1. MSRDC コントロール、テキスト ボックス、DBGrid のいずれかをバインドします。MSRDC コントロールにバインドする場合は、RDO コントロールをツール ボックスに追加します。
    1. [ツールボックス]ウィンドウを右クリックして[コンポーネント]をクリックします。
    2. "Microsoft RemoteData Control 2.0" を選択して[OK]をクリックします。
    3. [プロジェクト]をクリックし、次に[参照設定]をクリックします。
    4. "Microsoft Remote Data Object 2.0" を選択して[OK]をクリックします。



  2. ツール ボックスの MSRDC コントロールをクリックします。次に、Form1 ウィンドウでカーソルをドラッグして MSRDC コントロールを作成します。
  3. プロパティ ウィンドウの[Connect]フィールドに「database=Employees」と入力します。このフィールドでは、ODBC によるデータ アクセスのための接続文字列を設定し、接続先のテーブルを指定します。一覧からデータベースの種類を選択しなかった場合は、必然的に ODBC が使用されることになるため、このフィールドに、「ODBC」と入力する必要はありません。次に、[DataSourceName]フィールドに[Pvideo]と入力します。このフィールドでは、作成したデータ ソースの名前を指定します。[SQL]フィールドに次のクエリを入力します。
    Select * from Employees
    このクエリにより、Employee データベースからすべてのデータが抽出されます。

または、DB グリッドをバインドすることもできます。

  1. [プロジェクト]の[コンポーネント]をクリックし、DBGrid をフォームに追加します。
  2. プロパティ ウィンドウの[DataSource]フィールドを MSRDC コントロールの名前に設定します。
  3. DBGrid を右クリックして[フィールドの取得]を選択します。このコマンドにより、MSRDC テーブル用に既に定義されている列名、長さ、データ型を使用して DBGrid が再定義されます。

MSRDC コントロール、テキスト ボックス、DBGrid のいずれかがバインドされた後、選択準備完了です。

Dim Qry As String 
'クエリを作成する 
Qry = "SELECT * FROM Employees" 
Qry = Qry + " WHERE (LastName = '" + txtFind.Text + "')" 
'データ コントロールをリフレッシュする 
MSRDC1.SQL = Qry 
MSRDC1.Refresh 
DBGrid1.Refresh 

SQL を使用して挿入する

挿入する行をデータ バッファに設定して BINSERT を呼び出すことにより、行の挿入が行えます。

  1. 構造体をパックされた行に変換します。
    StructToRow custrow.buf, CustFldMap, custrec, LenB(keyrec) 
    
  2. Btrieve Insert 関数を呼び出します。
    status% = BTRCALL(BINSERT, CustPosBlk$, custrow, LenB(custrow), 0, 0, -1) 
    
  3. ステータスを確認します。
    If status% <> 0 Then 
       MsgBox "Insert エラー:" & status% 
    End If 
    

MSRDC を使用して挿入する

テーブルに 1 つまたは複数のレコードを追加します。

  1. テキスト ボックスを MSRDC コントロールにバインドします。
    1. テキスト ボックスをフォームに追加します。
    2. プロパティ ウィンドウの[DataSource]フィールドを MSRDC コントロールの名前に設定します。
    3. プロパティ ウィンドウの[DataField]フィールドをデータベースの任意のフィールド名に設定します。

'一時的にこのテキストを保持する 
text1temp$ = Text1.Text 
text2temp$ = Text2.Text 
text3temp$ = Text3.Text 
' テキスト ボックスがデータ ソースに 
' バインドされている場合、  
' バウンド コントロールに 
' データの変更を認識させるためには、  
' 次のコード行が必要です。 
Text1.DataChanged = False 
Text2.DataChanged = False 
Text3.DataChanged = False 
' これらの初期値が既に存在しているかチェックする必要があります。  

SQL を使用して更新する

UPDATE ステートメントを使用することにより、データベース内の列の値を変更することができます。特定の列の値をすべて変更しない場合は、WHERE 句を使用してテーブル内で変更する行を定義することができます。

この例では、グリッド内の現在の Last Name を Text3 テキストボックス内のテキストに置き換えます。

  1. この例を実行するために必要なツールを選択します。この例を実行するために必要なツールを選択します。を参照してください。
  2. MSRDC コントロール、テキスト ボックス、DBGrid のいずれか、またはすべてをバインドします。
Dim strSQLChange As String 
Dim qdfChange As rdoQuery 
Dim rstEmployees As rdoResultset 
' テキスト ボックスがデータ ソースに  
' バインドされている場合、 
' バウンド コントロールに  
' コードの次の行が必要です。 
Text3.DataChanged = False 
'グリッド内の Last Name を置き換える 
Last$ = DBGrid1.Columns(2).Text 
'アクション クエリ用の SQL ステートメントを定義する 
strSQLChange = "UPDATE Employees SET LastName = " & _ 
  "'" + Text3.Text + "' WHERE LastName = '" + Last$ + "'" 
Set qdfChange = MSRDC1.Connection.CreateQuery("", strSQLChange) 
Set rstEmployees = MSRDC1.Connection.OpenResultset( _ 
  "SELECT * FROM Employees", _ 
  dbOpenForwardOnly) 
qdfChange.Execute 
rstEmployees.Requery 
MSRDC1.Refresh 
rstEmployees.Close 
DBGrid1.Refresh 
'新規レコードを追加する 
MSRDC1.Resultset.AddNew 
Text1.Text = text1temp$ 
Text2.Text = text2temp$ 
Text3.Text = text3temp$ 
'Resultset を更新する 
MSRDC1.Resultset.Update 

MSRDC を使用して更新する

データの更新後、次のコードを実行して変更を適用します。

MSRDC1.UpdateRow 

パラメーター クエリを使用する

rdoQuery オブジェクトは、WHERE 句に 1 つまたは複数のパラメーターを持つ SQL クエリを実行するために使用されます。パラメーターは、実行されるたびに rdoQuery オブジェクトによって処理されます。これは、頻繁に使用するクエリを実行する際に役立ちます。パラメーター クエリは、ユーザーまたはアプリケーションによって指定されたパラメーターを通常のクエリに置き換えます。

パラメーター Insert ステートメントを使用する

  1. この例を実行するために必要なツールを選択します。この例を実行するために必要なツールを選択します。を参照してください。
  2. MSRDC コントロール、テキスト ボックス、DBGrid のいずれか、またはすべてをバインドします。MSRDC コントロール、テキスト ボックス、DBGrid のいずれかをバインドします。MSRDC コントロールにバインドする場合は、RDO コントロールをツール ボックスに追加します。を参照してください。
  3. 以下のコードを入力します。
Dim Qry As String 
Dim qdfChange As rdoQuery 
Dim rstEmployees As rdoResultset 
' テキスト ボックスがデータ ソースに  
' バインドされている場合、 
' バウンド コントロールに  
' コードの次の行が必要です。 
Text1.DataChanged = False 
Text2.DataChanged = False 
Text3.DataChanged = False 
'クエリを作成する 
'パラメーターのプレースホルダーとして  
' 疑問符を使用します。 
Qry = "INSERT INTO Employees(Initials, LastName, FirstName)" 
Qry = Qry + " VALUES (?, ?, ?)" 
'クエリに名前を付けることにより、 
'そのクエリに再度アクセスすることができますが、 
'"" を使用した場合、このクエリは Query  
'コレクションに追加されません。名前を付ければ、 
'Query コレクションに追加されます。 
Set qdfChange = MSRDC1.Connection.CreateQuery("", Qry) 
'パラメーターを設定する 
qdfChange.rdoParameters(0) = Text1.Text 
qdfChange.rdoParameters(1) = Text2.Text 
qdfChange.rdoParameters(2) = Text3.Text 
Set rstEmployees = MSRDC1.Connection.OpenResultset( _ 
  "SELECT * FROM Employees", _ 
  dbOpenForwardOnly) 
'SQL ステートメントを実行する 
qdfChange.Execute 
'データ コントロールをリフレッシュする 
MSRDC1.Refresh 
rstEmployees.Close 
DBGrid1.Refresh 

パラメーター Update ステートメントを使用する

  1. この例を実行するために必要なツールを選択します。この例を実行するために必要なツールを選択します。を参照してください。
  2. MSRDC コントロール、テキスト ボックス、DBGrid のいずれか、またはすべてをバインドします。MSRDC コントロール、テキスト ボックス、DBGrid のいずれかをバインドします。MSRDC コントロールにバインドする場合は、RDO コントロールをツール ボックスに追加します。を参照してください。
  3. 以下のコードを入力します。
Dim strSQLChange As String 
Dim qdfChange As rdoQuery 
Dim rstEmployees As rdoResultset 
' テキスト ボックスがデータ ソースに  
' バインドされている場合、 
' バウンド コントロールに  
' コードの次の行が必要です。 
Text3.DataChanged = False 
'DBGrid の 3 番目の列が、 
'LastName Column で、これは、Update ステートメントの  
'検索条件 
Last$ = DBGrid1.Columns(2).Text 
'アクション クエリ用の SQL ステートメントを  
'定義する 
'このステートメントは、グリッド内の LastName を  
'Text3 内のテキストに置き換える  
'パラメーターの場所に 
'疑問符を使用する 
strSQLChange = "UPDATE Employees SET LastName = " & _ 
  "? WHERE LastName = '" + Last$ + "'" 
'クエリに名前を付けることにより、 
'そのクエリに再度アクセスすることができますが、 
'"" を使用した場合、このクエリはコレクションに追加されない 
Set qdfChange = MSRDC1.Connection.CreateQuery("", strSQLChange) 
'パラメーターを設定する 
'これにより、Update ステートメント内の ? が置き換えられる 
qdfChange.rdoParameters(0) = Text3.Text 
Set rstEmployees = MSRDC1.Connection.OpenResultset( _ 
  "SELECT * FROM Employees", _ 
  dbOpenForwardOnly) 
'パラメーターを使用した SQL ステートメントを実行する 
qdfChange.Execute 
MSRDC1.Refresh 
rstEmployees.Close 

レッスン 2:Visual Basic で Btrieve API を使用する

ActiveX を使用する Pervasive PSQL アプリケーションの作成