チェックボックスの処理

解決


りな  2010-02-02 23:06:07  No: 37402  IP: 192.*.*.*

以下のコードを書いて、実行したら(コンパイルはできてます)「xcancelの型がありません」が出てきました。いろいろと変えてみたのですが、コンパイルエラーになるか、実行時に「xcancelの型がありません」というエラーしか出てきません。もし原因がお分かりになる方がいましたら、教えていただけないでしょうか? テーブルの変数定義について、IDは数値型  NAMEはvarchar cancelはvarchar型です。

with query1 do 
  close;
  sql.add('insert into tableA (ID, NAME, CANCEL)');
  sql.add(' values (':xID, :xNAME, xCANCEL)');
  parambyName('xID')asInteger := strtoint(editID.Text);
  parambyName('xNAME')asString := editNAME.Text;
 if checkboxA.Checked = true then
     parambyName('xCancel')asString := '撤回'
   else  parambyNAME('xCancel')asString := '';

編集 削除
りな  2010-02-02 23:07:54  No: 37403  IP: 192.*.*.*

正確には「query1:項目'xcancel’の型がわかりません」というエラーメッセージです。

編集 削除
igy  2010-02-03 00:08:12  No: 37404  IP: 192.*.*.*

>  sql.add(' values (':xID, :xNAME, xCANCEL)');
で、
xCANCELの前に、
  :
がないのでは?

編集 削除
りな  2010-02-03 00:13:08  No: 37405  IP: 192.*.*.*

すみません。うち忘れです。実際は:xcancelとしています。

編集 削除
igy  2010-02-03 00:20:07  No: 37406  IP: 192.*.*.*

> if checkboxA.Checked = true then
>     parambyName('xCancel')asString := '撤回'
>   else  parambyNAME('xCancel')asString := '';

asStringの前に
  .
がないのでは?

編集 削除
igy  2010-02-03 00:38:36  No: 37407  IP: 192.*.*.*

あと、
> sql.add(' values (':xID, :xNAME, xCANCEL)');

>parambyNAME('xCancel')
で、
xCancelの大文字・小文字を合わせてみるとか・・・

編集 削除
HOta  2010-02-03 21:19:01  No: 37408  IP: 192.*.*.*

なんども書きますが、SQL文とDelphiのエラーは分けて考えましょう。対処方法が違ってきます。

編集 削除
りな  2010-02-03 22:56:05  No: 37409  IP: 192.*.*.*

HOtaさん、今後気をつけたいと思います。

問題は解決しました。if文でcheckboxがfalseの時を指定していなかったことが理由でした。

つまり、if checkbox.checked = true then
         処理
        else 処理

で、問題が解決しました。

ありがとうございました。

編集 削除