テキストボックスの表示をなくすには?

解決


こわし  2007-03-28 02:51:53  No: 135894

お聞きします。

コンボボックスにA、B、Cさんと選択でき、Aさんを選んでコマンドボタン押したら
DB上から抽出したAさんの情報をテキストボックスに表示させるコードを書いたとします。

そして他の人の情報を表示させようとしたときに、Aさんの情報の次の行に表示されてしまいます。(Aさんを選択してコマンドボタンをもう一度おしたらAさんの情報がまた表示される)

コマンドボタン押す前にそのテキストボックスを""で空にしようとしてもうまくいきません。

コードはまだ途中なので、わかりにくいかと思いますが、どうやったらテキストの
中の表示をさらにして、新しく表示させるのかがわかりません。
誰か教えてください。


特攻隊長まるるう  2007-03-28 04:26:10  No: 135895

>コマンドボタン押す前にそのテキストボックスを""で空にしようとしてもうまくいきません。
押した後、検索に行く前にすれば良いんじゃない?


こわし  2007-03-28 20:09:03  No: 135896

検索する前に""でやってみたんですけど、表示が消えてくれません。


通ってみた  2007-03-28 20:20:50  No: 135897

VB6ならとりあえずRefresh、DoEvents辺りを入れてみたらどうでしょうか?


ヤマ@文系  2007-03-29 09:57:11  No: 135898

DBから取り出すとき一旦、String方の変数に入れて
デバッグしてみては?


KG  2007-03-29 21:02:42  No: 135899

TextBox1.Text=????

この????の所をデバッグで確認すれば解決しそうな気もします。


こわし  2007-03-30 01:17:22  No: 135900

>ヤマ@文系さん
デバックで確認したら一回目は一回目の表示分、二回目は一回目の表示+二回目の表示分とでます。

>KGさん
確認してますがよくわかりません。。。。


こわし  2007-03-30 02:53:53  No: 135901

A(i) = i & chr(13) & che(10)
A(i + 1) = A(i)
text1.text = A(i + 1) 

とコードを書いてます。


KG  2007-03-30 03:07:19  No: 135902

>デバックで確認したら一回目は一回目の表示分、
>二回目は一回目の表示+二回目の表示分とでます。
DBから直接参照した結果がそうなっているのであれば
参照の仕方に問題があるような気もします。

#DBがなんなのか、VBのバージョンさえも未だ明記されていませんが。


特攻隊長まるるう  2007-03-30 05:23:55  No: 135903

通ってみたさんの 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処理のコードをそのまま載せてみては?


こわし  2007-03-30 09:12:57  No: 135904

>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

でやってみたんですけどそれでも前の表示したデータの次の行に表示されていきます・・・。


こわし  2007-03-30 09:23:43  No: 135905

配列をなくして
変数Aのみに情報を入れて実行する前に、AをNULLにしたらなりました!
iはいらなかったみたいです。お答えしてくれた皆様ありがとうございました。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加