テキストボックスに入力した値をSQL文に使うには?

解決


ぺけ  2008-01-25 17:11:47  No: 138738  IP: 192.*.*.*

例えば
名前  クラス  点数  
a     1       80
b     2       75
c     3       90
といった感じのデータベースを
更新の条件をテキストボックス1に入力したクラの番号
更新する点数をテキストボックス2に入力した数値
といった感じにするのにはどうしたらよいのでしょうか。

  sql = sql & "update point where class = "
  sql = sql & classnumber
  sql = sql & "set point ="
  sql = sql & updatepoint
  cn.Execute sql

 classnumber=text1.text
 updatepoint =text2.text

ためしにこういった形で試してみたのですが=の後ろに数値を入れろというようなエラーが出てしまいました。

環境はVisualBasic6.0とMySQLです。

編集 削除
特攻隊長まるるう  2008-01-25 17:27:55  No: 138739  IP: 192.*.*.*

>ためしにこういった形で試してみたのですが=の後ろに数値を入れろ
>というようなエラーが出てしまいました。
エラーメッセージは適当な解釈をせず、正確に書き写してください。

データベースの操作は
>cn.Execute sql
で実行されているわけですが、

その時点で classnumber , updatepoint には何が入っているのですか?
>cn.Execute sql
の直前で sql の中のデータを出力して、内容を確認してください。

また、質問する際は、各変数の型を明記してください。

編集 削除
GOD  2008-01-25 22:59:25  No: 138740  IP: 192.*.*.*

setの前にスペースないんじゃないの?
>>cn.Execute sql
実行系のSQLをやる前に Debug.Print 等を使用してSQL文をよく確認しないと「間違ったSQL文を実行してデータ戻したいけど戻せない。」なんてことにもなりますからね。まぁ、普通はデータのバックアップを取った後、実行系をやるのだろうけど戻すのにも手間はかかりますからね。

編集 削除
しんご  2008-01-26 00:07:03  No: 138741  IP: 192.*.*.*

型を書いてもらわないと適切なアドバイスができない。。

変数「classnumber」と「updatepoint」は
テキストボックスの内容を挿入しているので文字列型?
で、フィールド「class」はint型??

もしそうだとしたら、
"update point where class = '" & classnumber & "'"
みたいにアポストロフィーをつける必要があるかと。

SQL文で数値や日付データを取り扱う場合は
アポストロフィーで挟む必要があったような・・・・

編集 削除
ぺけ  2008-01-26 02:27:03  No: 138742  IP: 192.*.*.*

返信ありがとうございます。
色々と情報が足らずすみませんでした。

指摘いただいたところを一点一点確認させていただきましたところ、
解決することができました。
理由はSQL文が間違っていたのと、フォームロードに記述していたため
classnumber , updatepointが空になってたためのようです。
アドバイスありがとうございました。

編集 削除