- - PR -
コンボボックスへの値の代入
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2007-08-01 00:20
お世話になります。
経理ソフトで仕訳の画面を作成していて、貸借区分(値は-1=貸方、1=借方)をコンボボックスで選択できるようにしています。なお、この画面はTable Adapterとリンクしており、貸借区分はもちろんBinding SourceでTableの項目とリンクしています。 この画面に、消し込みの為、過去に作成した仕訳のデータを別のテーブル(Data Adapter)から読み込み、貸借区分を逆転させて画面上に代入しようとしています。この時の貸借区分の項目への代入文は次のとおりです。 Me.貸借区分.SelectedValue = -1 * データセット.Tables("テーブル").Rows(0)("貸借区分") これを実行すると貸借区分の項目には-1でも1でもなくNothingが代入されてしまいます。試しに、代入文にある「-1 *」を取って実行してみるとテーブル上の値(-1または1)がそのまま代入され、コンボボックスの選択表示も「貸方」または「借方」になるのですが、「-1 *」という計算式を加えるとどうして正しく代入されなくなってしまうのでしょうか。お分かりになる方、お助けくださいませ。 以上、よろしくお願いします。 | ||||
|
投稿日時: 2007-08-01 09:31
全体を切り分けて問題部分がどこなのかを特定しましょう。特定できなくとも問題が存在し得る範囲を狭めましょう。
現状では、夕凪さんの作成中のプログラムのどこかでこの問題が発生しているということしか分かりませんよね。 コンボボックスの問題でしょうか。コンボボックスに値を設定せずにテキストボックスに値を表示したらどうなりますか? DataSetの値を計算式に含めているのが問題でしょうか。値を固定して Dim a as Integer = 1 Me.貸借区分.SelectedValue = -1 * a こうしたらどうなりますか? 掛けている値がObject型なのが問題でしょうか。Integerではなく Dim a as Object = 1 Me.貸借区分.SelectedValue = -1 * a こうしたらどうなりますか? -1を掛けているのが問題でしょうか。 Me.貸借区分.SelectedValue = 1 * データセット.Tables("テーブル").Rows(0)("貸借区分") こうしたらどうなりますか? 掛け算をしているのが問題でしょうか。 Me.貸借区分.SelectedValue = 0 + データセット.Tables("テーブル").Rows(0)("貸借区分") こうしたらどうなりますか? とやっていって問題の本質が何なのか見つけてみてください。 | ||||
|
投稿日時: 2007-08-01 10:43
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=22834&forum=7&start=0
↑スレにもあるように ValueMember、DisplayMember データバインド時のデータベースの型 など原因は諸説あるようですが… SelectedItem プロパティはどうですか? | ||||
|
投稿日時: 2007-08-01 13:41
Nothing が代入されるのではなく、代入が正しく行われていないのではないでしょうか。 何れにせよ、一郎さんの提示した手順の試した結果によって明らかになりそうですが。 _________________ R・田中一郎 - R.Tanaka.Ichiro’s Blog | ||||
|
投稿日時: 2007-08-03 23:47
皆様、コメントありがとうございました。
一郎さんがご提示くださった4つの例はすべてNothingが代入されました。 また、CStr変換を用いてテキストボックスに代入してみたところ、「-1」または「1」が表示されました。 これより、式の右辺は問題ないことがわかりましたので、型を疑うことにし、試しに Me.貸借区分.SelectedValue = CShort(-1 * データセット.Tables("テーブル").Rows(0)("貸借区分")) という型変換をしてみたところ、-1または1が代入されるようになりました。 以上、大変失礼しました。 以後、型について気をつけるようにします。 |
1