例えば
名前 クラス 点数
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です。
>ためしにこういった形で試してみたのですが=の後ろに数値を入れろ
>というようなエラーが出てしまいました。
エラーメッセージは適当な解釈をせず、正確に書き写してください。
データベースの操作は
>cn.Execute sql
で実行されているわけですが、
その時点で classnumber , updatepoint には何が入っているのですか?
>cn.Execute sql
の直前で sql の中のデータを出力して、内容を確認してください。
また、質問する際は、各変数の型を明記してください。
setの前にスペースないんじゃないの?
>>cn.Execute sql
実行系のSQLをやる前に Debug.Print 等を使用してSQL文をよく確認しないと「間違ったSQL文を実行してデータ戻したいけど戻せない。」なんてことにもなりますからね。まぁ、普通はデータのバックアップを取った後、実行系をやるのだろうけど戻すのにも手間はかかりますからね。
型を書いてもらわないと適切なアドバイスができない。。
変数「classnumber」と「updatepoint」は
テキストボックスの内容を挿入しているので文字列型?
で、フィールド「class」はint型??
もしそうだとしたら、
"update point where class = '" & classnumber & "'"
みたいにアポストロフィーをつける必要があるかと。
SQL文で数値や日付データを取り扱う場合は
アポストロフィーで挟む必要があったような・・・・
返信ありがとうございます。
色々と情報が足らずすみませんでした。
指摘いただいたところを一点一点確認させていただきましたところ、
解決することができました。
理由はSQL文が間違っていたのと、フォームロードに記述していたため
classnumber , updatepointが空になってたためのようです。
アドバイスありがとうございました。