お聞きします。
コンボボックスにA、B、Cさんと選択でき、Aさんを選んでコマンドボタン押したら
DB上から抽出したAさんの情報をテキストボックスに表示させるコードを書いたとします。
そして他の人の情報を表示させようとしたときに、Aさんの情報の次の行に表示されてしまいます。(Aさんを選択してコマンドボタンをもう一度おしたらAさんの情報がまた表示される)
コマンドボタン押す前にそのテキストボックスを""で空にしようとしてもうまくいきません。
コードはまだ途中なので、わかりにくいかと思いますが、どうやったらテキストの
中の表示をさらにして、新しく表示させるのかがわかりません。
誰か教えてください。
>コマンドボタン押す前にそのテキストボックスを""で空にしようとしてもうまくいきません。
押した後、検索に行く前にすれば良いんじゃない?
検索する前に""でやってみたんですけど、表示が消えてくれません。
VB6ならとりあえずRefresh、DoEvents辺りを入れてみたらどうでしょうか?
DBから取り出すとき一旦、String方の変数に入れて
デバッグしてみては?
TextBox1.Text=????
この????の所をデバッグで確認すれば解決しそうな気もします。
>ヤマ@文系さん
デバックで確認したら一回目は一回目の表示分、二回目は一回目の表示+二回目の表示分とでます。
>KGさん
確認してますがよくわかりません。。。。
A(i) = i & chr(13) & che(10)
A(i + 1) = A(i)
text1.text = A(i + 1)
とコードを書いてます。
>デバックで確認したら一回目は一回目の表示分、
>二回目は一回目の表示+二回目の表示分とでます。
DBから直接参照した結果がそうなっているのであれば
参照の仕方に問題があるような気もします。
#DBがなんなのか、VBのバージョンさえも未だ明記されていませんが。
通ってみたさんの Refresh、DoEvents の案は、処理中に画面が更新されない
http://hanatyan.sakura.ne.jp/vbbbs/wforum.cgi?mode=allread&no=8707&page=0
というような例の場合で、話を聞いてると今回の質問は処理が終わっても
表示されてるというような可能性が高いですね。。。(断言できる説明は今のところ無いですが。。。)
>DoEventsってDO〜LOOP内で優先させるやつですか?
主語が無いから何を意図してるのか分かりませんが、多分違うと思います。
メッセージ キューに現在ある Windows メッセージをすべて処理します。
簡単に言えばOS(Windows)に制御を戻します。自分の処理の実行中はOSからの
命令を実行しません。マウスが動いたとか、クリックされたとか、キーボード
から入力があったとか、ウィンドウが重なったから再描画するとか…そういった
命令(情報)をキューという場所に溜め込んでおいて、実行している処理が終わった
ときに一気に実行します。
DoEvents を実行すれば、それらが先に実行されます。
Refresh は再描画処理を実行します。
…しかし妙な処理を書いてるね?
>Dim A(100) as sring
100も要素を用意する意味が、今のところの説明では全くありません。
Aさんの情報が最大で100個あることを想定しているの?
でも、結局テキストボックスにしか表示しないなら、
1個でいいはずなんだよね。。。しかも
>A(i) = i & chr(13) & che(10)
>A(i + 1) = A(i)
(i)番目を(i + 1)番目に入れる???
(i)番目を覚えておく必要があるのでしょうか?
A(i + 1) = i & chr(13) & che(10)
だけではダメなんでしょうかね?なんか重複したデータを
色々なところに残してそれを表示に使っちゃってるだけでは?
> sring → String
> che → Chr
誤字も多いですし、下手に出し惜しみせず、今書いてる
Do Loop処理のコードをそのまま載せてみては?
>KGさん
DBはアクセスとかいうやつです。VBは6.0で動かしてます。
>特攻隊長まるろうさん
A(100)はDBから取り出す情報がその都度変わるのでとりあえず100にしただけなんです。
RE-("select * from 社員")
Do While Not ADOrs.EOF
A(i) = A(i) & ADOrs.Fields(1).Value & Chr(13) & Chr(10)
Text1.Text = A(i)
ADOrs.MoveNext
loop
でやってみたんですけどそれでも前の表示したデータの次の行に表示されていきます・・・。
配列をなくして
変数Aのみに情報を入れて実行する前に、AをNULLにしたらなりました!
iはいらなかったみたいです。お答えしてくれた皆様ありがとうございました。
ツイート | ![]() |