- ベストアンサー
複数条件でのレコード抽出について
- Access2010、Win7を使用している場合、複数条件でのレコード抽出の方法について質問があります。
- 学生名簿というテーブルの身長と体重のデータ型が数値型である必要があります。
- サンプルコードを見つけ、入力した身長と体重に合致する学生の情報を抽出することができました。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
Accessで型変換について探せばいろいろ出てくると思いますが、 >SQL = "SELECT 学生ID,身長,体重 FROM 学生名簿 WHERE 体重>=" & Me!テキスト3 & " AND 身長>=" & Me!テキスト2 を、 SQL = "SELECT 学生ID,身長,体重 FROM 学生名簿 WHERE Val([体重])>=" & Val(Me!テキスト3) & " AND Val([身長])>=" & Val(Me!テキスト2) のようにします。 テキストボックスはデフォルトのIME入力モードならばPCの入力方法によりますが、一応、テキストボックスのほうにも型変換の網をかけておきます。 このように、WHERE条件の体重と身長のフィールド名をVal([体重])、Val([身長])のようにVal関数でフィールドの値を数値に変更します。ただし、Val関数は小数点以下を取らないので小数点があるならCLng([体重])、CLng([身長])のようにCLng関数を使います。 SQL = "SELECT 学生ID,身長,体重 FROM 学生名簿 WHERE CLngng([体重])>=" & Me!テキスト3 & " AND CLng([身長])>=" & Me!テキスト2 あるいは、 SQL = "SELECT 学生ID,身長,体重 FROM 学生名簿 WHERE CLng([体重])>=" & CLng(Me!テキスト3) & " AND CLng([身長])>=" & CLng(Me!テキスト2) なお、 Set rs = CurrentDb.OpenRecordset(SQL) としているので、参照設定でDAOにチェックが入っていると思いますが、 もし、ADOにもチェックが入っていればエラーおきる可能性もあるので、 変数宣言で、 Dim rs As Recordset を Dim rs As DAO.Recordset のようにしておいてください。
お礼
piroin654さん ありがとうございました。無事解決できました。Val()で強制的に変換できる事を知り 勉強になりました。 >Accessで型変換について探せばいろいろ出てくると思いますが 検索の仕方も併せて勉強していきたいと思います。