• 検索結果がありません。

データベース1

N/A
N/A
Protected

Academic year: 2021

シェア "データベース1"

Copied!
7
0
0

読み込み中.... (全文を見る)

全文

(1)

プログラムの概要

ACCESS 等のデータベースの操作に不慣れな者でも、簡単 に使用する事が出来るようなデータベースアプリケーショ ンを目指します。 今回は、データグリッドをクリックする事に依り、其のレ コードのフィールドデータを個別にテキストボックスやコ ンボボックスに表示する機能を付加する。此の際、カテゴ リIDや著者IDの様に人間に解り難いデータ形式では無 く、名称で表示する事に依り、操作性を高めて居る。 亦、テキストボックスやコンボボックスで入力したデータ を追加したり、表示された内容に変更を加えて更新したり 表示されたレコードを削除したりする機能を付加する。 VB でデータベースを操作する為の基本と成る機能を盛り 込んで有るので、色々と工夫し、発展させて、操作性の良 いアプリケーションに仕上げて下さい。

データベース操作プログラムⅢ

VB⑳ □ オブジェクト変数の宣言(Dim、New) □ プロパティの値の取得と設定(Recordset、ListCount、ListIndex、ItemData) □ メソッドの利用(Open、Execute、Close、Refresh)

□ ステートメントの利用(Call、Exit Sub、Exit For) □ 組込関数の利用(Date)

□ 制御構造構文(ループ For ~ Next、条件分岐 Select Case1、If ~ Then … End If) □ デバッグ(Debug.Print) 今回の課題項目 □ オブジェクト型変数の宣言(Dim、New) □ ADODC(Recordset、Refresh) □ ADODB.Connection(Open、Execute、Close) □ SQL 文(INSERT 文:レコードを追加する文、DELETE 文:レコードを削除する文) 今回の重点項目 □ 本テーブル以外のデータも操作出来る様に変更する。 □ 様々な SQL 文を試してみる。 今回の応用項目

(2)

■ プログラムリスト(追加分) ■ ' データグリッドがクリックされた時の処理【追加】

Private Sub dgdDisp_Click( )

' サブプロシージャレベルでローカルな変数を宣言する Dim I As Integer

' オプションボタンで『本』が選択されて居る時だけフィールドデータを表示する If optDisp(0).Value = True Then

txtID.Text = adoDB.Recordset("ID")

txtTitle.Text = adoDB.Recordset("タイトル") txtPrice.Text = adoDB.Recordset("価格") For I = 0 To cmbCate.ListCount - 1

If adoDB.Recordset("カテゴリ ID") = cmbCate.ItemData(I) Then cmbCate.ListIndex = I

Exit For End If Next I

For I = 0 To cmbWriter.ListCount - 1

If adoDB.Recordset("著者 ID") = cmbWriter.ItemData(I) Then cmbWriter.ListIndex = I Exit For End If Next I End If End Sub データグリッドに表示され ている「 」行のデータを取 得するには、フォーム上に貼 り付けた ADODC の Recordset プロパティを使用する。 ConnectionString プロパティ(ADODC) 直訳すると『接続文字列』。ダイアログボックスにて視覚的に設定する事が多いが、1字1句 間違わなければ、直接入力しても設定する事が出来る。要は、何のデータベースと接続する のかを指定するプロパティで有る。若し、フォルダの名称を変更したり、ファイル名を変更 したり、保存場所を変更する等して、設定した時と異なる場合は、再度設定し直す必要が有 る。 Recordset プロパティ(ADODC) カレントレコードに於いて、指定したフィールド名に該当するフィールドデータを取得する。 RecordSource プロパティ(ADODC) 指定した検索文を元に、ADODC オブジェクトは検索結果データを取得する。 データグリッドはADODC オブジェクト内に取得したデータを表示する。 Refresh メソッド(ADODC) RecordSource プロパティの指定のみでは、検索結果データは ADODC に取得され無い。 Refresh メソッドを実行する事に依り、データベース側の最新データを取得する事が出来る。 VB での SQL 文の扱い VB にて SQL 文を記述する際には、文字列(ダブルクオーテーション区切り)と成る。 データベースソフトに送られた時点で、文字列はSQL 文で有ると看做され、実行される。

(3)

' コマンドボタンがクリックされた時の処理【追加】 Private Sub cmdSQL_Click(Index As Integer)

' サブプロシージャレベルでローカルな変数を宣言する Dim Cn As New adoDB.Connection Dim SQL As String

' 本が選択されて居なければサブプロシージャを抜ける If optDisp(0).Value = False Then Exit Sub

' カーソルを開く

Cn.Open adoDB.ConnectionString

Select Case Index

' コマンドボタン(追加)がクリックされた場合 Case 0

If cmbCate.ListIndex < 0 Or cmbWriter.ListIndex < 0 Or txtTitle.Text = "" Then Exit Sub SQL = "INSERT INTO 本(タイトル,価格,購入日,カテゴリ ID,著者 ID) VALUES(" & _

"'" & txtTitle.Text & "'" & _ "," & Val(txtPrice.Text) & _ ",'" & Date & "'" & _

"," & cmbCate.ItemData(cmbCate.ListIndex) & _ "," & cmbWriter.ItemData(cmbWriter.ListIndex) & ")" ' コマンドボタン(更新)がクリックされた場合

Case 1

If cmbCate.ListIndex < 0 Or cmbWriter.ListIndex < 0 Then Exit Sub SQL = "UPDATE 本 SET タイトル='" & txtTitle.Text & "'," & _ "価格=" & Val(txtPrice.Text) & "," & _

"購入日='" & Date & "'," & _

"カテゴリ ID=" & cmbCate.ItemData(cmbCate.ListIndex) & "," & _ "著者 ID=" & cmbWriter.ItemData(cmbWriter.ListIndex) & " " & _ "WHERE ID=" & txtID.Text

' コマンドボタン(削除)がクリックされた場合 Case 2

SQL = "DELETE FROM 本 WHERE タイトル='" & txtTitle.Text & "'" End Select ' デバッグの為にSQL文をイミディエイトウィンドウに表示する Debug.Print SQL ' クエリーを実行する Cn.Execute SQL ' カーソルを閉じる Cn.Close ' オブジェクトとの関連付けを解除する Set Cn = Nothing adoDB.Refresh Call CateUpdate End Sub 頻繁に行う処理は、名前を付 け、一纏めに仕て置き、其の 処理を必要とする箇所より コール(呼出)する事で、対 象のコードを実行する事が 出来る。 オブジェクト変数を宣言す る時に New キーワードを指 定すると、オブジェクトを最 初に参照した時に、オブジェ クトの新しいインスタンス が作成される為、Set を使用 してオブジェクトへの参照 を代入する必要は無い。 オブジェクト型変数は使用 終了した時点で Nothing を 代入し、関連付けを解除する 事が望ましい。 基本的にVB のコードは 1 行毎でしか記述する事が出来ないが、1行のコードが長い場合は、行継 続文字(スペースとアンダースコアの組合せ)を使用する事で、複数行に分割して入力する事が出 来る。但し、行継続文字に続けて、同一行にコメントを入力する事は出来ない。行継続文字を使用 すると、画面に表示する時や印刷した時に、読み易いコードを記述する事が出来る。

(4)

コード上でSQL 文を実行するには コード上でSQL 文を実行するには、コード上で、以下のオブジェクトを使用する。 ADODB.Connection オブジェクト(データベースと接続する為のオブジェクト) ADODB.Recordset オブジェクト (検索文を発行した際にデータを格納するオブジェクト) オブジェクトをコードで使用するには、変数に格納して使用する必要がある。 此れをオブジェクト型の変数宣言と謂う。

Dim 変数名 1 As New ADODB.Connection

Dim 変数名 2 As New ADODB.Recordset (SELECT 文で無い場合は不要)

INSERT・UPDATE・DELETE 文を実行する場合は、ADODB.Connection オブジェクトの Open(開く)→Execute(実行)→Close(閉じる)メソッドを使用する。 変数名 1.Open “データベースの種類・データベースの場所文字列“ 変数名 1.Execute “SQL 文“ 変数名 1.Close SELECT 文の場合は検索結果を取得するので、ADODB.Recordset オブジェクトに SQL 文を指定する。 変数名 2.Open “SQL 文“,変数名 1{ADODB.Connection} 「RecordCount」プロパティにて検索結果の件数を取得する事が出来る。 「Fields」プロパティにて指定したフィールドデータを取得する事が出来る。 「MoveNext」メソッドにて検索結果のレコードカーソルを移動する事が出来る。 変数名 2.Close ADODB.Recordset の EOF プロパティ レコードデータを参照する際には、カレントレコードを移動する必要が有る。Open メソッド実 行直後は検索結果の 1 番目のレコードがカレントレコードと成る。MoveNext メソッドを実行す る事に依り、1 件ずつカーソルを移動する事が出来る。EOF プロパティは最終レコードの下の意 味で「此れ以上はデータが無い」状況を謂う。 イメージ(検索結果データ) ID タイトル 1 ACCESS テクニック集 3000 2 EXCEL テクニック集 2500 8 実用 WORD 1300 ・ ・ ・ ・ 実行直後は1 件目にカーソルがある。 MoveNext メソッドを実行するとカーソルが 1 つずつ下へ移動する。 カーソルが 1 番下のレコードより下に移動す ると、EOF=True となる。

(5)

オブジェクト型変数の宣言 タイプライブラリで定義されたオブジェクトに対して変数を宣言する Dim 変数名 As [New] クラス名 オブジェクトをコードで使用する為に、対象のタイプライブラリに依り提供されるクラス名 を変数宣言の中で指定し、オブジェクトを変数に格納する クラス名は、コンポーネント名.クラス名(例:Exel.Chart)と謂う形式で構成される事が有る。 コンポーネント:オブジェクトを提供するコンポーネントの名前 オブジェクトブラウザの『プロジェクト/ライブラリ』ボックスに表示される。 ク ラ ス:コンポーネントのタイプライブラリを提供するオブジェクトのクラスの名前 オブジェクトブラウザの『クラス』ボックスに表示される。 New キーワードを使用してオブジェクト変数を宣言すると、オブジェクトが自動的に作成され、其の変 数を最初に使用する時に、オブジェクトの参照が代入される為、Set ステートメントを用いて変数への オブジェクトの参照を代入する必要が無い。 猶、New キーワードを用いて宣言した変数を使用すると、アプリケーションの実行速度が遅く成る可能 性が有る。此れは、Visual Basic では、New キーワードを用いて宣言した変数が有ると、其の度に、オ ブジェクトの参照が既に其の変数に代入されて居るか何うかが検証される為で有る。

亦、タイプライブラリとは、COM(Component Object Model:プログラムをソフトウェアコンポー ネントで構成する為のオブジェクト指向技術に基づくモデル)で利用可能な公開されて居るクラスに関 する情報を含むライブラリの事を謂い、プロパティーやメソッドの名前と、其等に付いての標準的な説 明が含まれる。 ADODC.Connection オブジェクト データベースと接続する為のオブジェクト Connection オブジェクトは、データ ソースへの接続を表し、データ ソースとの固有のセ ッションを表す。クライアントサーバーデータベースシステムの場合、此のオブジェクトは サーバーへの実際のネットワークに対応する。 ADODC.Connection の Open メソッド データソースへの接続を開くメソッド Connection.Open 引数1,引数2,引数3,引数4 データ ソースへの物理的な接続を設定する。此のメソッドが完了すると接続状態が確立し、 コマンドを発行して結果を処理する事が出来る。 引数1には、接続情報(ConnectionString)を指定し、省略する事が出来る。 引数2には、接続を確立する際に必要なユーザー名を指定し、省略する事が出来る。 引数3には、接続を確立する際に必要なパスワードを指定し、省略する事が出来る。 引数4には、同期接続、非同期接続の孰れかを示す定数を指定し、省略する事が出来る。 機 能 書 式 解 説 機 能 解 説 機 能 書 式 解 説

(6)

ADODC.Connection の Execute メソッド 指定されたクエリ、SQL ステートメント、ストアドプロシージャ等を実行するメソッド Connection.Execute 引数1,引数2,引数3 指定した接続上で、引数1で指定されたメソッドに渡すクエリが実行される。 引数1には、実行するSQL ステートメント、テーブル名等を指定し、必ず指定する。 引数2には、プロバイダが返す操作の結果を反映するレコード数を指定し、省略する事が出来る。 引数3には、プロバイダが引数1を評価する方法を示す定数を指定し、省略する事が出来る。 ADODC.Connection の Close メソッド 開いて居るオブジェクト、及び、依存する総てのオブジェクトを閉じるメソッド Connection.Close Connection オブジェクト、又は、Recordset オブジェクトを閉じて、関連するシステムリソ ースを解放する。 オブジェクトを閉じてもメモリからは削除されず、プロパティ設定を変更してもう一度開く事が出来る。 メモリからオブジェクトを完全に削除するには、オブジェクト変数をNothing に設定する。 ADODC の Recordset プロパティ 基に成るADO Recordset オブジェクトへの参照を設定するプロパティ

Object.Recordset(フィールド名) 又は Object.Recordset!フィールド名 フィールド名で指定したフィールドデータの値を取得する。 Debug.Print の利用 実行時にイミディエイトウィンドウに数値、文字列等を出力する。 Debug.Print 引数 引数で指定した式の値をイミディエイトウィンドウに出力する。 引数には、出力する式、又は、式のリストを指定し、省略する事が出来る。 変数内に何の様な内容が格納されて居るのか確認したい場合、メニューバーの『表示』から『イミディ エイトウィンドゥ』を選択して表示させて置き、上記の様にコードを記述して置くと、実行時に指定し た変数の内容が『イミディエイトウィンドゥ』に表示される。 機 能 書 式 解 説 機 能 書 式 解 説 機 能 書 式 解 説 機 能 書 式 解 説

(7)

オブジェクト指向 嘗てのプログラムはシンプルなシステムの上に成り立って居た。併し、近日では、GUI(グラ フィカルユーザインターフェイス:マウスで視覚的に操作出来る仕組み)の OS(オペレーシ ョンシステム:Windows98、2000、XP、MacOS 等)が発達し、より簡単に、より複雑な 処理を行える様に成った。其れに伴い、プログラミングの手法も其れに沿う必要が有った。 ・ 開発スピードの向上 ・ 様々な機能を有するソフト開発が出来る事。 ・ 過去作業の再利用 上記の条件を満たすプログラミングの手法として『オブジェクト指向』と謂う概念が編み出 された。簡単に謂うと、『部品と部品を組み合わせてひとつの物を作る』と謂う物で有る。 VisualBasic に限らず、Java、C++、Delphi でも取り入れられて居る概念で有り、大方、考 え方に違いは無い。 概 念 図 解 オブジェクト(Object) 若しくはコントロール(Control) フォームやラベルやテキストボックス等 を指します。物体と謂う意味です。 プロパティ(Property) 私には特徴が有ります。 例えば、 名前:りんごちゃん 高さ:5cm 幅 :5cm 色 :赤色 等々 必要に応じて変更して下さい。 イベント(Event) 皆さんがマウスで私をクリックしたりする と、出来事が起こります。 例えば、

Private Sub りんごちゃん_Click() プログラム End Sub 必要に応じて何をするか言って (プログラムして)下さい。 メソッド(Method) 命令して頂ければ、 行動します。 例えば、 「動きなさい」と言って下さい。 りんごちゃん.Move いずこへ オブジェクト 1から作成する事も出来るが、既存の物に関しては使用する。VB では様々なコントロールが用 意されて居る。 プロパティ コントロールには属性が有り、デザイン上、コード上で変更、参照する事が出来る。其の数、 種類はコントロールに依り異なる。 イベント GUI では様々な操作が有る。例えば、クリック、ダブルクリック、ドラッグドロップ等。必要 に応じてイベント内にプログラムする。イベントドリブン(分割)方式と言う。 メソッド プロパティと区別が付き難いが、『=』で結ばれて居ないのが特徴。オブジェクトに対して『命 令』すると覚えると良い。

参照

関連したドキュメント

本節では本研究で実際にスレッドのトレースを行うた めに用いた Linux ftrace 及び ftrace を利用する Android Systrace について説明する.. 2.1

LLVM から Haskell への変換は、各 LLVM 命令をそれと 同等な処理を行う Haskell のプログラムに変換することに より、実現される。

全国の宿泊旅行実施者を抽出することに加え、性・年代別の宿泊旅行実施率を知るために実施した。

「系統情報の公開」に関する留意事項

注)○のあるものを使用すること。

*Windows 10 を実行しているデバイスの場合、 Windows 10 Home 、Pro 、または Enterprise をご利用ください。S

8 地域巡り(地域探検) 実施 学校 ・公共交通機関を使用する場合は、混雑する ラッシュ時間を避ける。. 9 社会科見学・遠足等校外学習

 吹付け石綿 (レベル1) 、断熱材等 (レベル2) が使用されて