@IT会議室は、ITエンジニアに特化した質問・回答コミュニティ「QA@IT」に生まれ変わりました。ぜひご利用ください。
- PR -

コンボボックスへの値の代入

1
投稿者投稿内容
夕凪
常連さん
会議室デビュー日: 2006/04/30
投稿数: 24
投稿日時: 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 *」という計算式を加えるとどうして正しく代入されなくなってしまうのでしょうか。お分かりになる方、お助けくださいませ。

以上、よろしくお願いします。
一郎
ぬし
会議室デビュー日: 2002/10/11
投稿数: 1081
投稿日時: 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/04/17
投稿数: 89
お住まい・勤務地: 北のほうの国
投稿日時: 2007-08-01 10:43
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=22834&forum=7&start=0
↑スレにもあるように
ValueMember、DisplayMember
データバインド時のデータベースの型
など原因は諸説あるようですが…

SelectedItem プロパティはどうですか?
R・田中一郎
ぬし
会議室デビュー日: 2005/11/03
投稿数: 979
投稿日時: 2007-08-01 13:41
引用:

夕凪さんの書き込み (2007-08-01 00:20) より:

Me.貸借区分.SelectedValue = -1 * データセット.Tables("テーブル").Rows(0)("貸借区分")

これを実行すると貸借区分の項目には-1でも1でもなくNothingが代入されてしまいま


Nothing が代入されるのではなく、代入が正しく行われていないのではないでしょうか。
何れにせよ、一郎さんの提示した手順の試した結果によって明らかになりそうですが。
_________________
R・田中一郎 -  R.Tanaka.Ichiro’s Blog
夕凪
常連さん
会議室デビュー日: 2006/04/30
投稿数: 24
投稿日時: 2007-08-03 23:47
皆様、コメントありがとうございました。

一郎さんがご提示くださった4つの例はすべてNothingが代入されました。
また、CStr変換を用いてテキストボックスに代入してみたところ、「-1」または「1」が表示されました。
これより、式の右辺は問題ないことがわかりましたので、型を疑うことにし、試しに

Me.貸借区分.SelectedValue = CShort(-1 * データセット.Tables("テーブル").Rows(0)("貸借区分"))

という型変換をしてみたところ、-1または1が代入されるようになりました。

以上、大変失礼しました。
以後、型について気をつけるようにします。
1

スキルアップ/キャリアアップ(JOB@IT)