[リストへもどる]
一括表示

投稿時間:2002/08/22(Thu) 10:45
投稿者名:タラコ
Eメール:
URL :
タイトル:
データ形式
たとえばSQLで、  値段 >= Val(Text3.Text)(データーベースはアクセス(MDB))

があるとき、アクセスで値段を数値型で設定するとSQLエラー(データ型が一致しない)
と出ます。で、値段をテキスト型で設定するとなぜかうまくいきます。
なぜでしょうか?
値段を数値型に設定して、VALでテキストを返かんしてるのになぜうまくいかないんでしょう?

投稿時間:2002/08/22(Thu) 12:05
投稿者名:とろ
Eメール:
URL :
タイトル:
Re: データ形式
> たとえばSQLで、  値段 >= Val(Text3.Text)(データーベースはアクセス(MDB))
>
> があるとき、アクセスで値段を数値型で設定するとSQLエラー(データ型が一致しない)
> と出ます。で、値段をテキスト型で設定するとなぜかうまくいきます。

ここで言う、 "うまくいく" っていうのは、エラーが発生しないということですか?
それとも、入力した条件に合うものを、正しく取得できるということですか?

もしかして、 SQL にそのまま Text3.Text という文字を渡していませんか?
Text3 に入力された文字(数値)を使用する場合は、 " の外側に出す必要がありますよ。

ちなみに、テキスト型で "45" と "123" を比較した場合、
"123" の方が小さいと判断されてしまいますので、ご注意を。

投稿時間:2002/08/22(Thu) 12:54
投稿者名:タラコ
Eメール:
URL :
タイトル:
Re^2: データ形式
うまくいってないようです。

で、今度は文字型の(値段)を数値型に変換してやろうと思ったんですが,
それが本にもネットにものってません。なぜでしょう?
もしやできないんでは?

値段 >= val(text1.text)  

で、実際のソースは
(a,b,cともにテキスト型)

strSQL = "select a,b,c from database where "
strSQL = strSQL & "a like '%" & Text1.Text & "%' "
strSQL = strSQL & "and b like '%" & Text2.Text & "%' "
strSQL = strSQL & "and c between '" & Val(Text3.Text) & "' and  '&
quot; & Val(Text4.Text) & "'"

なんですがうまくいきませんどなたか良きアドバイスを。

投稿時間:2002/08/22(Thu) 13:25
投稿者名:
Eメール:
URL :
タイトル:
Re^3: データ形式
aとtext1,bとtext2が等しいものの中で、
値段がtext3,からtext4の間のものをとりたいんですね?


strSQL = "select a,b,c from database where "
strSQL = strSQL & "a like '%" & Text1.Text & "%' "
strSQL = strSQL & "and b like '%" & Text2.Text & "%' "
strSQL = strSQL & "and c >='" & Val(Text3.Text) & "' "
strSQL = strSQL & "and c<= '" & Val(Text4.Text) & "'"
てしたらどうかな?

投稿時間:2002/08/22(Thu) 13:34
投稿者名:タラコ
Eメール:
URL :
タイトル:
Re^4: データ形式
> strSQL = "select a,b,c from database where "
> strSQL = strSQL & "a like '%" & Text1.Text & "%' "
> strSQL = strSQL & "and b like '%" & Text2.Text & "%' "
> strSQL = strSQL & "and c >='" & Val(Text3.Text) & "' "
;
> strSQL = strSQL & "and c<= '" & Val(Text4.Text) & "'"

それも試したんですが、Cがテキスト型なんで、
きちんとひかくされないんです。
で、データベースでCの項目を数値型に直したら、
抽出条件が、、、てエラーがでます。
なぜでしょう?

投稿時間:2002/08/22(Thu) 14:36
投稿者名:NAO★
Eメール:
URL :
タイトル:
Re^5: データ形式
> で、データベースでCの項目を数値型に直したら、
> 抽出条件が、、、てエラーがでます。
> なぜでしょう?

数値の比較ではシングルクォーテーションで囲まないようにすればOK
○ c BETWEEN 1 AND 99
× c BETWEEN '1' AND '99'

strSQLを Debug.Print すれば期待している問い合わせかすぐ分かると思います。

投稿時間:2002/08/22(Thu) 14:59
投稿者名:タラコ
Eメール:
URL :
タイトル:
(お礼) データ形式
NAOさんありがとう!

さっそくやってみます!