メールマガジン【アクセスで作るシリーズ】
バックナンバー 【会計ソフト編】 Vol.52
■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□
ACCESSで作るシリーズ 【会計ソフト編】
発 行 : Yoshihisa Fukuda 2001. 5. 6 Vol.52
■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□
--------------------------------------
前回はデータの追加、更新、削除の方法を紹介しました。
今回はデータを検索する方法を解説します。
== ◇ 第5章 拡張機能 ====================
--------------------------------------
第7回 VBAでのテーブル操作(続き)
--------------------------------------
前回と同様に SAMPLE_DB.MDB というデーターベースの中に ABC_TABLE と言う
テーブルがあり FIELD_1(テキスト型)のフィールドがあるとしましょう。
今回は、複数のレコードの中から、FIELD_1 のデータを検索するプログラムを作成
してみましょう。
◆レコードを検索する
まず、最初にデータベースを開き、そのデーターベースオブジェクトを使用して
テーブルを開きレコードセットを獲得します。
Dim SMPL_DB As Database
Dim ABC_T As Recordset
Set SMPL_DB = CurrentDb
Set ABC_T = SMPL_DB.OpenRecordset("ABC_TABLE", dbOpenDynaset)
では、レコードセットを使って[あ]という文字を検索しましょう。
まず、FIELD_1 に[あ]という文字が含まれているという検索条件式を記述します。
"FIELD_1 like '*あ*'" となります。
like とは指定した文字のパターンを比較します。
この場合、'*あ*'という文字パターンが含まれているか比較します。
'*あ*'と[あ]の前後に[*]が付いていますが、これはワイルドカード文字といい
任意の数の文字を指します。
この[*]を取ると[あ]が含まれるでは無くてFIELD_1が[あ]のレコードを検索する
事になります。
[あ]をシングルクォーテーション(')で括っているのは文字列だからです。
数値の場合、シングルクォーテーションで括る必要はありません。
また、FIELD_1が[あ]で始まるレコードを検索したい場合は、'あ*'と記述します。
検索をコードで書くとFindFirstメソッドを使用して以下のように書きます。
ABC_T.FindFirst "FIELD_1 like '*あ*'"
お気付きの方も居られるかと思いますが、OpenRecordsetで今まではテーブル名
だけ指定していましたが、今回はその後ろにdbOpenDynasetと言う引数が付いてい
ます。
これは以前にでてきましたが、テーブルをダイナセットタイプで開いています。
(詳しくはVol.49参照)
この様にFindFirstメソッドを使用する時はダイナセットタイプでオープンしなくて
はいけませんので注意して下さい。
後は、検索文字列を書き換えるだけで、好きなデータを検索する事ができます。
数値ならば < や > を使って以上、以下や範囲指定もできます。
そして、前回、前々回の表示、更新、削除を使えば、検索したレコードを自由に
操作できます。
◆レコードを検索する その2
検索にはFindFirstメソッドの他にSeekメソッドと言うのがあります。
こちらは、検索するフィールドがインデックスでなければなりません。
今回の ABC_TABLE に FIELD_2 を追加しましょう。
数値型でインデックスを[はい(重複あり)]にします。
そして、以下のコードで検索できます。
Dim SMPL_DB As Database
Dim ABC_T As Recordset
Dim SerchStr As String
Set SMPL_DB = CurrentDb
Set ABC_T = SMPL_DB.OpenRecordset("ABC_TABLE")
SerchStr = SerchText
ABC_T.Index = "FIELD_2"
ABC_T.Seek "=", SerchStr
If ABC_T.NoMatch = True Then
MsgBox "該当データがありません"
Else
MsgBox ABC_T.Fields("FIELD_1")
End If
ABC_T.Close
SMPL_DB.Close
Set ABC_T = Nothing
Set SMPL_DB = Nothing
注意点として、Seekメソッドの場合、OpenRecordsetはダイナセットタイプにする
必要はありません。
但し、検索できるフィールドは必ずインデックスでなければなりません。
そして、10行目にあるようにIndexプロパティを設定しなくてはいけません。
Seekメソッドの最初の引数は "=" 以外に "<" ">" "<=" ">=" などがあります。
--------------------------------------
4回に渡り、VBAでのテーブル操作を解説しました。
これで基本的な事は大体出来ると思います。
次回からは数回に分けて、SQLに関する解説をしていきたいと思います。
______________________________________
◆◇ Q&Aコーナー ◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇
今回はありません。
______________________________________
◆◇ お知らせ ◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇
今回のメールマガジンVol.52とアンケートは、『まぐまぐ』のメンテナンスの事情
により、配信日が遅れております。
ご了承下さいますよう、よろしくお願いいたします。
______________________________________
■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□
◇ ACCESSで作るシリーズ 【会計ソフト編】
◇ 発 行 元 :Yoshihisa Fukuda(福田 義久)
◇ ご意見・ご要望
ご質問等 :y.fukuda@ro.bekkoame.ne.jp
◇ このメールマガジンは、インターネットの本屋さん『まぐまぐ』を利用して発行
しています。(まぐまぐID:0000030446)
◇ バックナンバー:http://www.bekkoame.ne.jp/ro/y.fukuda/
◇ 登録・解除 :http://www.bekkoame.ne.jp/ro/y.fukuda/
Copyright(C) 2000-2001 Yoshihisa Fukuda All rights reserved.
◇転載について
このメールマガジンの無断転載などは、一切禁止です。
転載をご希望の方は、事前にメールで連絡をください。
◇免責
このメールマガジン及びホームページの内容による、いかなる損害、障害などに
関して発行者は一切の責任を負いません。
掲載広告についても同様です。
______________________________________
■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□
ACCESSで作るシリーズ 【会計ソフト編】
発 行 : Yoshihisa Fukuda 2001. 5. 6 Vol.52
■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□
--------------------------------------
前回はデータの追加、更新、削除の方法を紹介しました。
今回はデータを検索する方法を解説します。
== ◇ 第5章 拡張機能 ====================
--------------------------------------
第7回 VBAでのテーブル操作(続き)
--------------------------------------
前回と同様に SAMPLE_DB.MDB というデーターベースの中に ABC_TABLE と言う
テーブルがあり FIELD_1(テキスト型)のフィールドがあるとしましょう。
今回は、複数のレコードの中から、FIELD_1 のデータを検索するプログラムを作成
してみましょう。
◆レコードを検索する
まず、最初にデータベースを開き、そのデーターベースオブジェクトを使用して
テーブルを開きレコードセットを獲得します。
Dim SMPL_DB As Database
Dim ABC_T As Recordset
Set SMPL_DB = CurrentDb
Set ABC_T = SMPL_DB.OpenRecordset("ABC_TABLE", dbOpenDynaset)
では、レコードセットを使って[あ]という文字を検索しましょう。
まず、FIELD_1 に[あ]という文字が含まれているという検索条件式を記述します。
"FIELD_1 like '*あ*'" となります。
like とは指定した文字のパターンを比較します。
この場合、'*あ*'という文字パターンが含まれているか比較します。
'*あ*'と[あ]の前後に[*]が付いていますが、これはワイルドカード文字といい
任意の数の文字を指します。
この[*]を取ると[あ]が含まれるでは無くてFIELD_1が[あ]のレコードを検索する
事になります。
[あ]をシングルクォーテーション(')で括っているのは文字列だからです。
数値の場合、シングルクォーテーションで括る必要はありません。
また、FIELD_1が[あ]で始まるレコードを検索したい場合は、'あ*'と記述します。
検索をコードで書くとFindFirstメソッドを使用して以下のように書きます。
ABC_T.FindFirst "FIELD_1 like '*あ*'"
お気付きの方も居られるかと思いますが、OpenRecordsetで今まではテーブル名
だけ指定していましたが、今回はその後ろにdbOpenDynasetと言う引数が付いてい
ます。
これは以前にでてきましたが、テーブルをダイナセットタイプで開いています。
(詳しくはVol.49参照)
この様にFindFirstメソッドを使用する時はダイナセットタイプでオープンしなくて
はいけませんので注意して下さい。
後は、検索文字列を書き換えるだけで、好きなデータを検索する事ができます。
数値ならば < や > を使って以上、以下や範囲指定もできます。
そして、前回、前々回の表示、更新、削除を使えば、検索したレコードを自由に
操作できます。
◆レコードを検索する その2
検索にはFindFirstメソッドの他にSeekメソッドと言うのがあります。
こちらは、検索するフィールドがインデックスでなければなりません。
今回の ABC_TABLE に FIELD_2 を追加しましょう。
数値型でインデックスを[はい(重複あり)]にします。
そして、以下のコードで検索できます。
Dim SMPL_DB As Database
Dim ABC_T As Recordset
Dim SerchStr As String
Set SMPL_DB = CurrentDb
Set ABC_T = SMPL_DB.OpenRecordset("ABC_TABLE")
SerchStr = SerchText
ABC_T.Index = "FIELD_2"
ABC_T.Seek "=", SerchStr
If ABC_T.NoMatch = True Then
MsgBox "該当データがありません"
Else
MsgBox ABC_T.Fields("FIELD_1")
End If
ABC_T.Close
SMPL_DB.Close
Set ABC_T = Nothing
Set SMPL_DB = Nothing
注意点として、Seekメソッドの場合、OpenRecordsetはダイナセットタイプにする
必要はありません。
但し、検索できるフィールドは必ずインデックスでなければなりません。
そして、10行目にあるようにIndexプロパティを設定しなくてはいけません。
Seekメソッドの最初の引数は "=" 以外に "<" ">" "<=" ">=" などがあります。
--------------------------------------
4回に渡り、VBAでのテーブル操作を解説しました。
これで基本的な事は大体出来ると思います。
次回からは数回に分けて、SQLに関する解説をしていきたいと思います。
______________________________________
◆◇ Q&Aコーナー ◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇
今回はありません。
______________________________________
◆◇ お知らせ ◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇
今回のメールマガジンVol.52とアンケートは、『まぐまぐ』のメンテナンスの事情
により、配信日が遅れております。
ご了承下さいますよう、よろしくお願いいたします。
______________________________________
■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□
◇ ACCESSで作るシリーズ 【会計ソフト編】
◇ 発 行 元 :Yoshihisa Fukuda(福田 義久)
◇ ご意見・ご要望
ご質問等 :y.fukuda@ro.bekkoame.ne.jp
◇ このメールマガジンは、インターネットの本屋さん『まぐまぐ』を利用して発行
しています。(まぐまぐID:0000030446)
◇ バックナンバー:http://www.bekkoame.ne.jp/ro/y.fukuda/
◇ 登録・解除 :http://www.bekkoame.ne.jp/ro/y.fukuda/
Copyright(C) 2000-2001 Yoshihisa Fukuda All rights reserved.
◇転載について
このメールマガジンの無断転載などは、一切禁止です。
転載をご希望の方は、事前にメールで連絡をください。
◇免責
このメールマガジン及びホームページの内容による、いかなる損害、障害などに
関して発行者は一切の責任を負いません。
掲載広告についても同様です。
______________________________________
■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□