- - PR -
DropDownListのSelectedItem.ValueのDBインサート
投稿者 | 投稿内容 | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2005-02-14 14:00
皆様返信ありがとうございます。
>DropDownList.SelectedValueはStringですよ。 確認しました。その通りです。 >ちゃんとパースしてください。 つまり変換ですよね?Parseを調べて実装してみたのですが、エラーになります。 Parse自体を確認しようと思い、次のようなソースを実装してみました。 Dim s as String Dim i as Integer s = drpl_process1.SelectedItem.Value i = Integer.Parse(s) が・・・結果は「入力文字列の形式が正しくありません。例外の詳細: System.FormatException: 入力文字列の形式が正しくありません。」 と出てしまいます。Parseの使い方に問題があるのでしょうか? また、同じInsertDataの引数でSelectedItem.Valueを変換せずに渡しているものが あるのですが、それについてはエラーが出ないのはなぜですか?同じくStringであれば それらについてもエラーが出るのではないでしょうか? | ||||||||||||
|
投稿日時: 2005-02-14 16:09
おふぃすこまです。
まず、私やburton999さんが言った事は試してみました? とりあえずそれで本当に数値が入ってるか分かるので。 それと、数値と仰っているのは 5.0 とかではないですよね? 『そんな事知ってるよ!』って言われるかもしれませんが、 Integer は整数なので、少数点では例外が発生します。
ここからは私個人の意見なのですが、出るものと出ないものがある・・・と言う議論も 確かに重要なのですが、まずは変換ありきで考えた方がいいと思いますよ。 メソッドの引数はIntegerなのに、呼び出し元の指定がStringって、普通に考えたらおかしいですよね? その状態で悩むよりも、『変換が必要なものは全て変換する』という方針で進んだ方が良いと思います。 | ||||||||||||
|
投稿日時: 2005-02-14 17:50
String sにはどんな文字列が格納されているのでしょうか?
普通にIntegerに変換できない文字がはいっていると思われます。。。。 | ||||||||||||
|
投稿日時: 2005-02-14 21:37
ちょっと整理。。。
こういうコードを書いている、と考えてよろしいですか?そして、次のように書くと期待通りに処理される、と。
それで、私のレスを受けての分ですが、次のようにして、やはりFormatExceptionが生成される、ということですか?
最初の投稿では、『InsertData(drpl_process1.SelectedItem.Value)』となっていますが、このコードは実際に走らせたコードではないですよね?そういうのは混乱する元なのでやめましょう。 それから『InsertDataメソッドに数値を直接引き渡すと正常にDB登録しますので』というのも、すべての引数を数値にしたのか、特定の引数だけ数値にしたのかわかりません。そのため、この投稿をしています。これって、あなたにとって時間の浪費でしかないですよね? 私たちはあなたの横にいるわけではありません。そのため、あなたが書いたことしかわかりません。あなたが削除した情報を、私たちが補完することは出来ません。どれが必要かわからなければ、とりあえずすべて書き出してください。多すぎる情報から削除することは出来ても、ない情報を作り出すことは出来ないからです。 # かといって、整理して書かれていなければ読まれないわけで # その辺が難しいのですけど(^_^; _________________ | ||||||||||||
|
投稿日時: 2005-02-21 13:34
何度も申し訳ありません。
>まず、私やburton999さんが言った事は試してみました? おふぃすこまさんとburton999から言われましたStrict=onを実装したところ、 今回の問合せと別の個所で次のエラーが出ました。 BC30512: Option Strict On で 'System.Object' から 'System.Data.DataSet' への暗 黙的な変換はできません。 これについては、別途調べたいと思います。 Jittaさんに投稿方法で注意されるのは2度目です。(苦笑) 前回ソースを提示したところ「丸投げは良くない」といわれたので、自分なりにエラー原因と思われる個所のみをピックアップして掲示したのですが、これまた失敗だったようですね。難しいです。 Jittaさんが整理してくださった通りのコードです。 またJittaさんのレスを受けてのコードは、次の通りです。 ' 呼び出し Dim val1 As Integer = Integer.Parse(drpl_process1.SelectedItem.Value) InsertData(drpl_post.SelectedItem.Value,drpl_project.SelectedItem.Value, _ val1,11,12,13,14,15,16,17,18,19,20,21,2,2,2) 第1,2引数はSelectedItem.Valueを直接引き渡してもエラーにはならず、第3引数以降にエラーが出ることが分かっていた為、Parseした値以外は数値を直接記述して試しました。 その結果下記エラーが出ます。 System.FormatException: 入力文字列の形式が正しくありません。 ソース エラー: 行 120: 行 121: Sub Button1_Click(sender As Object, e As EventArgs) 行 122: Dim val1 As Integer = Integer.Parse(drpl_process1.SelectedItem.Value) 行 123: InsertProjectProcess(6234,drpl_project.SelectedItem.Value, _ 行 124: val1,11,12,13,14,15,16,17,18,19,20,21,2,2,2) このような情報提示でご指導いただけますでしょうか? まだ何か過不足がありましたらご指摘願います。 | ||||||||||||
|
投稿日時: 2005-02-21 15:25
確認したいのですが、
InsertDataに渡そうとしている SelectedItem.Valueに格納されている文字列は全て ちゃんと数字(数値に変換できる文字列)なんですかね? ちなみに >BC30512: Option Strict On で 'System.Object' から 'System.Data.DataSet' への暗 黙的な変換はできません。 これは、キャストしてくれってことです。 | ||||||||||||
|
投稿日時: 2005-02-21 16:46
Dim val1 As Integer = Integer.Parse(drpl_process1.SelectedItem.Value)
InsertData(drpl_post.SelectedItem.Value,drpl_project.SelectedItem.Value, _ val1,11,12,13,14,15,16,17,18,19,20,21,2,2,2) これを Dim val1 As Integer = 1 InsertData(drpl_post.SelectedItem.Value,drpl_project.SelectedItem.Value, _ val1,11,12,13,14,15,16,17,18,19,20,21,2,2,2) に変更した場合、エラーが発生しますか? あと、drpl_process1.SelectedItem.Valueの中身をデバック用のラベルにでも 出力して確認されてみてはどうでしょうか (空文字ってことはないですか) | ||||||||||||
|
投稿日時: 2005-02-21 17:17
ゆうじゅん様
>Dim val1 As Integer = 1 >InsertData(drpl_post.SelectedItem.Value,drpl_project.SelectedItem.Value, _ >val1,11,12,13,14,15,16,17,18,19,20,21,2,2,2) >に変更した場合、エラーが発生しますか? エラーにならずにDB登録されます。 >あと、drpl_process1.SelectedItem.Valueの中身をデバック用のラベルにでも >出力して確認されてみてはどうでしょうか Insertメソッドをコメントアウトし、Label3.Text = drpl_process1.SelectedItem.Value と追記してみたところ表示されません。つまり空文字ということなんでしょうか? ちなみに、drpl_post.SelectedItem.Value,drpl_project.SelectedItem.Valueを試してみたところ、選択したアイテムのValueが表示されます。 DropDownリストの作成方法に問題があるのでしょうか? burton999様 >SelectedItem.Valueに格納されている文字列は全て >ちゃんと数字(数値に変換できる文字列)なんですかね? DBのテーブルを利用してDropDownListにしています。DropDownList生成時のDataValueFieldにはテーブルのアイデンティティカラムを設定しています。 このカラムはint型でNull禁止としています。 もう一度DropDownList生成等に問題がないか、見直してみます。 |