• ベストアンサー

SQL文 困ってます

データベースはACCESSになります。 抽出条件なんですけど、フィールドは全て、テキスト型 例、平成14年04月01日~平成14年04月10日で金額が10000円以上のデータを抽出したいのですがどうも金額のところでひっかかっているような気がするので誰か教えてください。ソースを書きます。 HstrSQL = "SELECT * From お買上情報 where 年月日 Between '" & DMLKOK.MaskEdBox2.Text & "'" & "and '" & DMLKOK.MaskEdBox3.Text & "'" & _ "and 金額 >= '" & DMLKOK.Text1.Text & "'" どかおねがいします。すごく困っています。

質問者が選んだベストアンサー

  • ベストアンサー
  • mfuku
  • ベストアンサー率50% (173/345)
回答No.5

> " and 金額 >= king & _ > ってすると、一つ以上の必要なパラメータの値が設定されていません。とでます。 変数名をSQLに直接埋め込んでも解釈してくれません。 また、金額のテキストボックスが未入力の場合など、Long型に変換できなかった場合の対処も必要です。 従って、例えば、 dim king as long If IsNumeric(dmlkok.text1.text) Then king = clng(dmlkok.text1.text) Else king = 0 End If HstrSQL = "SELECT * From お買上情報 where 年月日 Between '" & DMLKOK.MaskEdBox2.Text & "' and '" & DMLKOK.MaskEdBox3.Text & "' and 金額 >= " & king という形にしてください。

すると、全ての回答が全文表示されます。

その他の回答 (4)

  • maruru01
  • ベストアンサー率51% (1179/2272)
回答No.4

こんにちは。maruru01です。 金額が文字列型だとまずいことになります。 例えば、 数値型で、 金額 >= 200 なら、1000は該当しますが、 文字列型で、 金額 >= '200' なら、1000は該当しません。 つまり上の例では、文字列型の"200"は、文字の"2"と"0"と"0"の集まりなので、先頭から文字を比較して、"1000"の"1"よりも"200"の"2"の方が大きい(文字コード)と判断するわけです。 早い話、 100.txt 200.txt 1000.txt というファイルをファイル名順(昇順)に並べると、 100.txt 1000.txt 200.txt という順になるのと同じことです。 金額などの数値は、数値型にすることをお奨めします。 では。

GERRARD
質問者

補足

数値型にすると書き方は(小数点は考えない) dim king as long king = clng(dmlkok.text1.text) " and 金額 >= king & _ ってすると、一つ以上の必要なパラメータの値が設定されていません。とでます。 *数値型だと書き方が分からなかったので,テキスト型にしてました。

すると、全ての回答が全文表示されます。
  • mfuku
  • ベストアンサー率50% (173/345)
回答No.3

#2の者です。 失礼いたしました。 > 抽出条件なんですけど、フィールドは全て、テキスト型 ということで、「金額」とはいえども文字型なんですね・・。 #1の方の指摘が原因かと思われます。

すると、全ての回答が全文表示されます。
  • mfuku
  • ベストアンサー率50% (173/345)
回答No.2

#1の方の指摘に加えて、 金額であるにも関わらず「'」が入っているのも気になります。 「'」で囲む必要があるのは文字型のフィールドです。

すると、全ての回答が全文表示されます。
  • sienna
  • ベストアンサー率35% (51/145)
回答No.1

「and」 の前後にスペースが入っていないとかじゃないですよね。

すると、全ての回答が全文表示されます。

関連するQ&A