プロが教えるわが家の防犯対策術!

データベースはACCESSになります。
抽出条件なんですけど、フィールドは全て、テキスト型

例、平成14年04月01日~平成14年04月10日で金額が10000円以上のデータを抽出したいのですがどうも金額のところでひっかかっているような気がするので誰か教えてください。ソースを書きます。

HstrSQL = "SELECT * From お買上情報 where 年月日 Between '" & DMLKOK.MaskEdBox2.Text & "'" & "and '" & DMLKOK.MaskEdBox3.Text & "'" & _
"and 金額 >= '" & DMLKOK.Text1.Text & "'"

どかおねがいします。すごく困っています。

A 回答 (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

という形にしてください。
    • good
    • 0

こんにちは。

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
という順になるのと同じことです。

金額などの数値は、数値型にすることをお奨めします。
では。

この回答への補足

数値型にすると書き方は(小数点は考えない)

dim king as long

king = clng(dmlkok.text1.text)

" and 金額 >= king & _

ってすると、一つ以上の必要なパラメータの値が設定されていません。とでます。

*数値型だと書き方が分からなかったので,テキスト型にしてました。

補足日時:2002/07/09 18:34
    • good
    • 0

#2の者です。



失礼いたしました。

> 抽出条件なんですけど、フィールドは全て、テキスト型

ということで、「金額」とはいえども文字型なんですね・・。
#1の方の指摘が原因かと思われます。
    • good
    • 0

#1の方の指摘に加えて、


金額であるにも関わらず「'」が入っているのも気になります。
「'」で囲む必要があるのは文字型のフィールドです。
    • good
    • 0

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

    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!