- PR -

TextBoxで値が表示されているのに値が取得できない

投稿者投稿内容
ワカ
会議室デビュー日: 2006/04/26
投稿数: 3
投稿日時: 2006-04-26 14:18
お世話になります。
よく分からない現象に悩まされています。

Form1よりForm2を呼び出し、データ表示させているのですが、
突然、Form2のテキストボックスに表示中のデータが
プログラムで取得できないという現象が起こりました。
同じForm2のコンボボックスからは値取得できています。

----------------------------------------------
TextBox1 画面上では "1" と表示中
ComboBox 画面上では "C" と表示中
----------------------------------------------
(プログラム内)
A = TextBox1.Text
B = ComboBox.SelectedItem
 ↓ 
A = ""
B = "C" となってしまいます。

どういうタイミングなのかは不明です・・・。
毎回なるというわけでもなく、半年以上稼働中のシステムにて突然起こりました。
その後、Form2画面のみを落とし、Form1よりForm2を起動しなおしても治りませんでした。
Form2,Form1も立ち上げなおすと治りました。

幼稚な説明文の為、判り難いかとは思いますが
同じような現象を経験された方がいらっしゃいましたら
対処方法をご伝授くださいますよう、よろしくお願いします。
まどか
ぬし
会議室デビュー日: 2005/09/06
投稿数: 372
お住まい・勤務地: ますのすし管区
投稿日時: 2006-04-26 14:25
うーん、情報が足りません。。。

環境は?

引用:

(プログラム内)
A = TextBox1.Text
B = ComboBox.SelectedItem


プログラムとはどこに書いてあるプログラム?
AとBの型は?遅延バインディング?
Form1とForm2の表示の仕方は?それぞれ単一のインスタンス?
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2006-04-26 14:26
確かに普通では考えられません。
ですので、ミニマムコードを頂ければ幸いです。

ミニマムコードを絞りだそうとする過程の中で、
不具合の原因に気付くことも多々あります。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
まどか
ぬし
会議室デビュー日: 2005/09/06
投稿数: 372
お住まい・勤務地: ますのすし管区
投稿日時: 2006-04-26 14:42
引用:

ミニマムコードを絞りだそうとする過程の中で、
不具合の原因に気付くことも多々あります。


とりあえず、外部から予期せぬインスタンスに対して参照していると予想してみる。。。
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2006-04-26 15:12
引用:

まどかさんの書き込み (2006-04-26 14:42) より:

とりあえず、外部から予期せぬインスタンスに対して参照していると予想してみる。。。


でもコードを見ると、ComboBox は大丈夫なんですよね?
(ComboBox1 になっていないのが気になりますが)

同じ位置 (クラス) に書いてあると思っています... (;^-^)
だとすれば、Me となりうる位置 (クラス) が Form2 でないとか...
同じ場所からであれば、スレッド間の問題もないでしょうし... うーん。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
ワカ
会議室デビュー日: 2006/04/26
投稿数: 3
投稿日時: 2006-04-26 15:58
ありがとうございます。ワカです。
情報少なくて申し訳ありません!

VS2003で開発しています。
Form1はただのメニュー画面で、クリックされたボタンに対応する
画面をCallするだけの画面です。
Form1からボタンクリックイベントにて、Form2をCallしています。

現象発生箇所は、From2のボタンクリックイベントにてデータを取得する処理の中です。
データ取得の為のボタンは、TextBox1,ComboBox1ともにNullチェックを行い、
値が入っている場合のみ操作可能なボタンです。

A,Bと記述しましたが、実際にはSqlCommandにてSql文を発行する為に
Sql文を作成している箇所で発生したようです。


Dim strSql as String

strSql = "Select a,b,c "
strSql = strSql & "From DB "
strSql = strSql & "WHERE aa = " & TextBox1.Text & " "
strSql = strSql & "AND bb = " & ComboBox1.SelectedItem & " "

このSql文を発行した際にTextBox1に値がない為、
Sql文エラーとなったようです。

このような説明で分かりますでしょうか・・・。
まどか
ぬし
会議室デビュー日: 2005/09/06
投稿数: 372
お住まい・勤務地: ますのすし管区
投稿日時: 2006-04-26 16:44
引用:

現象発生箇所は、From2のボタンクリックイベントにてデータを取得する処理の中です。

strSql = strSql & "WHERE aa = " & TextBox1.Text & " "
strSql = strSql & "AND bb = " & ComboBox1.SelectedItem & " "

このSql文を発行した際にTextBox1に値がない為、
Sql文エラーとなったようです。


問題は、エラーになった時点でTextBox1.Textの値がどうかということですが
その瞬間に、見た目としてTextBox1に"1"がいて、かつTextBox1.Text=""であるということを確認していますか?
#Null文字+"1"でない限りありえないと思うんですが。(←でも見た目何も見えないはず)

となると、このSQL文字列組み立て以前にTextBox1を操作してるとしか思えません。
ワカ
会議室デビュー日: 2006/04/26
投稿数: 3
投稿日時: 2006-04-26 17:01
返信ありがとうございます。

エラー発生時、Sql文をシステムエラーメッセージとして出力するようにしていましたので、
Sql文中に
『WHERE aa = AND bb = 'C'』となっているのは確認できました。
同時に画面に表示されていたTextBox1に 1 と表示されているのも確認しました。
デバックモードでの稼動ではなかったので、これ以上の確認のしようがありませんでした。


>SQL文字列組み立て以前にTextBox1を操作してるとしか思えません。
書き漏れていましたが、エラー発生時に別端末で
まったく同じ操作をしたところ問題なく動きました。
ですので、SQL文字列組み立て以前にということは考えにくいかと思います・・・。

なにか、端末の問題かもしれませんね。
端末のほうを疑って調べて見ます。

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

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