C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[6]: CheckBoxをmdbへ更新について教えて下


(過去ログ 31 を表示中)

[トピック内 8 記事 (1 - 8 表示)]  << 0 >>

■14886 / inTopicNo.1)  CheckBoxをmdbへ更新について教えて下さい。
  
□投稿者/ 青雉 (1回)-(2008/02/28(Thu) 12:20:25)

分類:[.NET 全般] 

mdbからYes/No型をWEBフォーム上で
CheckBox1 = (Boolean)reader["チェックフラグ1"];
CheckBox2 = (Boolean)reader["チェックフラグ2"];
として読み出しています。

このフォーム上で例えばCheckBoxを変更した際に
mdbのYes/No型へUPDATEを実行したいのですが
"UPDATE TABLEA SET チェックフラグ1='" + CheckBox1 + "',チェックフラグ2='" + CheckBox2 + "');";
と記述して実行すると「抽出条件でデータ型が一致しません。」とエラーがでます。

更新する方法をご教示下さい。

知識不足で申し訳ありませんがよろしくお願い致します。
コードはC#となります。
環境はASP.NET2.0 VS2005です。
引用返信 編集キー/
■14887 / inTopicNo.2)  Re[1]: CheckBoxをmdbへ更新について教えて下さい。
□投稿者/ 魔界の仮面弁士 (667回)-(2008/02/28(Thu) 12:52:06)
No14886 (青雉 さん) に返信
> mdbのYes/No型へUPDATEを実行したいのですが
> "UPDATE TABLEA SET  チェックフラグ1='" + CheckBox1 + "',チェックフラグ2='" + CheckBox2 + "');";
> と記述して実行すると「抽出条件でデータ型が一致しません。」とエラーがでます。

生成される SQL が、
 UPDATE TableA SET Flag1 = YES, Flag2 = NO
または、
 UPDATE TableA SET Flag1 = TRUE, Flag2 = FALSE
のいずれかの形になるように修正してみてください。

引用返信 編集キー/
■14890 / inTopicNo.3)  Re[2]: CheckBoxをmdbへ更新について教えて下さい。
□投稿者/ 青雉 (3回)-(2008/02/28(Thu) 13:58:07)
No14887 (魔界の仮面弁士 さん) に返信

魔界の仮面弁士さん
ありがとうございます。

> 生成される SQL が、
>  UPDATE TableA SET Flag1 = YES, Flag2 = NO
> または、
>  UPDATE TableA SET Flag1 = TRUE, Flag2 = FALSE
> のいずれかの形になるように修正してみてください。

なるほど。
この形ではないとエラーが出るという事ですね。

初歩的ですみません。

mdbからの読み出しの際はCheckBox1 = (Boolean)reader["チェックフラグ1"];
として追加のSQLに入る前に変換すると言ったイメージだと思っています。

ずっと考えて調べてみたのですがその変換の方法が思いつかなく再度、ご質問させて頂きました。
(Replaceとか使用するのでしょうか?)

何度もすいません。

教えて下さい。
引用返信 編集キー/
■14899 / inTopicNo.4)  Re[3]: CheckBoxをmdbへ更新について教えて下
□投稿者/ PATIO (11回)-(2008/02/28(Thu) 16:39:11)
2008/02/28(Thu) 16:46:58 編集(投稿者)
2008/02/28(Thu) 16:40:59 編集(投稿者)
2008/02/28(Thu) 16:39:58 編集(投稿者)

No14890 (青雉 さん) に返信
> mdbからの読み出しの際はCheckBox1 = (Boolean)reader["チェックフラグ1"];
> として追加のSQLに入る前に変換すると言ったイメージだと思っています。
>
> ずっと考えて調べてみたのですがその変換の方法が思いつかなく再度、ご質問させて頂きました。
> (Replaceとか使用するのでしょうか?)

BooleanがC#でどんな値をとるのかで判定できるのではないかと思います。
たぶん、trueとfalse(これは文字列では有りません。Booleanの値を表す記述です)のはずなので
単純にやるなら
String strWk;

if (CheckBox1 == true)
{
  strWk = "TRUE";
}
else
{
  strWk = "FALSE";
}

"UPDATE TABLEA SET チェックフラグ1='" + strWk + "');";

でも出来るのでは?
単純に考えちゃ駄目ですか?

こんなのとか
"UPDATE TABLEA SET チェックフラグ1='" + (CheckBox1 ? "TRUE" : "FALSE") + "');";

引用返信 編集キー/
■14906 / inTopicNo.5)  Re[4]: CheckBoxをmdbへ更新について教えて下
□投稿者/ 青雉 (4回)-(2008/02/28(Thu) 17:12:37)
No14899 (PATIO さん) に返信

PATIO さん

ありがとうございます。

> BooleanがC#でどんな値をとるのかで判定できるのではないかと思います。
> たぶん、trueとfalse(これは文字列では有りません。Booleanの値を表す記述です)のはずなので

勘違いしておりました。
ありがとうございます。

> "UPDATE TABLEA SET チェックフラグ1='" + (CheckBox1 ? "TRUE" : "FALSE") + "');";

数が30個程ありますので下記にて試させて頂きました。
チェックフラグ1='" + (CheckBox1.checkd ? "TRUE" : "FALSE") + "';";
すると「抽出条件が一致しません」とエラーが出てしまいました。


チェックフラグ1='" + (CheckBox1.checkd) ? "TRUE" : "FALSE" + "';";
だと思って試した所、「型'string"を型'bool'に変換できません」とエラーが出ました。

表示の段階で(Boolean)reader["チェックフラグ1"];としたのが
悪かったのでしょうか?

何度もすみませんがご教示下さいませ。

引用返信 編集キー/
■14920 / inTopicNo.6)  Re[5]: CheckBoxをmdbへ更新について教えて下
□投稿者/ 魔界の仮面弁士 (668回)-(2008/02/28(Thu) 18:03:44)
2008/02/28(Thu) 18:10:26 編集(投稿者)
No14906 (青雉 さん) に返信
> チェックフラグ1='" + (CheckBox1.checkd ? "TRUE" : "FALSE") + "';";

恐らくは、掲示板投稿時の誤記かと思いますが、
そもそも、CheckBox に checkd プロパティは存在しません。


それはさておき、先の No14887 の回答を再度確認してください。少なくとも私は、
  UPDATE TableA SET Flag1 = 'YES', Flag2 = 'NO';
や
  UPDATE TableA SET Flag1 = 'TRUE', Flag2 = 'FALSE';
といった回答をした覚えはありません。


> チェックフラグ1='" + (CheckBox1.checkd) ? "TRUE" : "FALSE" + "';";
> だと思って試した所、「型'string"を型'bool'に変換できません」とエラーが出ました。
恐らくそのコードは、
  s = "チェックフラグ1='"
  if (CheckBox1.Checked) { s += "TRUE"; } else { s += "FALSE"; }
  s += "';"
の意図で書かれたのだと思いますが、実際にはそのコードだと、
  if ("チェックフラグ1='" + CheckBox1.Checked) { s = "TRUE"; } else { s = "FALSE" + "';"; }
の意味で解釈されてしまうためです。


> 表示の段階で(Boolean)reader["チェックフラグ1"];としたのが
> 悪かったのでしょうか?
チェックボックスの値を設定する部分を
  CheckBox1.Checked = (bool)reader["チェックフラグ1"];
  CheckBox2.Checked = (Boolean)reader["チェックフラグ2"];
と書こうが、
  CheckBox1.Checked = true;
  CheckBox2.Checked = false;
と書こうが、今回のSQL 生成時に対しては無関係です。

引用返信 編集キー/
■14940 / inTopicNo.7)  Re[5]: CheckBoxをmdbへ更新について教えて下
□投稿者/ 七曜 (89回)-(2008/02/28(Thu) 22:56:42)
No14906 (青雉 さん) に返信
> チェックフラグ1='" + (CheckBox1.checkd) ? "TRUE" : "FALSE" + "';";
> だと思って試した所、「型'string"を型'bool'に変換できません」とエラーが出ました。

ん〜単純に[チェックフラグ1]は、Yes/No型というかBooleanなので
[チェックフラグ1]=true とか [チェックフラグ1]=false であれば Booleanを設定しますが
[チェックフラグ1]='true' とか [チェックフラグ1]='false' だと文字列型を代入しようとするから、そのエラーが出てるだけです。

で、実際にやるべきはCheckBox1.Checkedの状態によって[チェックフラグ1]を更新したいわけでしょうから
[チェックフラグ1]=CheckBox1.Checked
としてあげればいいだけです。(CheckBox1.CheckedはBoolean型なので。)

ですので、
String.Format("UPDATE TABLEA SET チェックフラグ1={0},チェックフラグ2={1};", CheckBox1.Checked, CheckBox2.Checked);
とすれば、目的のSQL文は生成できるかと。

引用返信 編集キー/
■14964 / inTopicNo.8)  Re[6]: CheckBoxをmdbへ更新について教えて下
□投稿者/ 青雉 (5回)-(2008/02/29(Fri) 12:06:12)
No14940 (七曜 さん) に返信


七曜 さま

ありがとうございます!

ずっと悩んでいたのですがやっぱり分からず
再度、ご質問させて頂こうと閲覧した所、七曜 さまの
アドバイスがあり、早速試した所、エラーなく実行できました。

> [チェックフラグ1]=true とか [チェックフラグ1]=false であれば Booleanを設定しますが
> [チェックフラグ1]='true' とか [チェックフラグ1]='false' だと文字列型を代入しようとするから、> そのエラーが出てるだけです。

そうだったのですか・・・
経験不足ですね。。。

本当に助かりました!
心から感謝いたします。
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -