■ 現在のこのページの役立ち度:
表示されない場合こちらのリンクからもご覧になれます。
■ このページの役立ち度を評価する:
役立ち度を評価してください。
(1(左):あまり役立たない - 5(右):大変役立った):
■ ページの共有:
[ サイト内検索 ]
カスタム検索
#45868-0判定ひーくん2001-08-14(火) 18:10
     #45869-0RE#45868:判定トモ@あゆあゆ2001-08-14(火) 18:18
     #45871-0RE#45868:判定よねKEN2001-08-14(火) 18:28
     #45870-0RE#45869:判定ひーくん2001-08-14(火) 18:28
     #45872-0RE#45871:判定よねKEN2001-08-14(火) 18:32
     #45873-0RE#45871:判定ひー2001-08-14(火) 18:41
#45868-0
判定
ただいま、判定のプログラムを作っています。
内容は、ログイン時に、テキストボックス2に名前を入力します。
そしてその名前が過去にテキストデータの中に登録されていた場合、
コマンド1ボタンを押させないというものです。
一応テキストデータを読み込ませ、変数に格納して、
それを参照して、テキストボックスに入力したデータが
過去に入力があったかどうかを判定しています。

Private Sub Form_Load()
    Dim strFileName As String
    Dim intFileNo As Integer
    Dim strRecBuff As String
    
    strFileName = "Back.txt"
    intFileNo = FreeFile
    Open strFileName For Input As intFileNo
    Do Until EOF(intFileNo)
        Line Input #intFileNo, strRecBuff
    Loop
    If login.Text2.Text = strRecBuff Then
        Command1.Enabled = False
    End If
    Close intFileNo
End Sub

どのあたりがおかしいのでしょうか?教えてください。
#45869-0
RE#45868:判定
> ただいま、判定のプログラムを作っています。
> 内容は、ログイン時に、テキストボックス2に名前を入力します。
> そしてその名前が過去にテキストデータの中に登録されていた場合、
> コマンド1ボタンを押させないというものです。
> 一応テキストデータを読み込ませ、変数に格納して、
> それを参照して、テキストボックスに入力したデータが
> 過去に入力があったかどうかを判定しています。

手っ取り早く直すならこうかなー。と。

Do Until EOF(intFileNo)
    Line Input #intFileNo, strRecBuff
    If login.Text2.Text = strRecBuff Then
        Command1.Enabled = False
    End If
Loop

たぶん勘違いなされているようなのですが
> Do Until EOF(intFileNo)
>     Line Input #intFileNo, strRecBuff
> Loop    
Line Inputで読み込んで、また読み込んでーとやったら最後の一行しか取得できません。
なので一番最後の行にあるかどうかしか確かめていません。

#こういうのでは色々方法はありますが…。
#45871-0
RE#45868:判定
> 内容は、ログイン時に、テキストボックス2に名前を入力します。
> そしてその名前が過去にテキストデータの中に登録されていた場合、
> コマンド1ボタンを押させないというものです。
> 一応テキストデータを読み込ませ、変数に格納して、
> それを参照して、テキストボックスに入力したデータが
> 過去に入力があったかどうかを判定しています。

で、どういうふうにうまくいっていないのでしょう?

Back.txtの中の形式は?
(コードからは、テキストボックスの中身と
テキストファイルの1行が対応するのでしょうけど・・・)

パスがフルパス指定ではありませんが、ファイルはそもそも読めていますか?
#フルパス指定ではないので、カレントディレクトリにあるBack.txtを読み込もうとします。
#ファイルが見つからなければ、エラーになるので、とりあえずは読み込めているのだとは思いますが・・・。
#たまたま、違うBack.txtがあったりすると、エラーになりませんので、ご注意を。

> Private Sub Form_Load()
>     Dim strFileName As String
>     Dim intFileNo As Integer
>     Dim strRecBuff As String
>     
>     strFileName = "Back.txt"
>     intFileNo = FreeFile
>     Open strFileName For Input As intFileNo
>     Do Until EOF(intFileNo)
>         Line Input #intFileNo, strRecBuff
>     Loop

>     If login.Text2.Text = strRecBuff Then
>         Command1.Enabled = False
>     End If

このif文がLoopの中に入っていないので、ファイルの中の
最後の行の内容としか比較してませんので、たぶんこれは間違いでしょう。

>     Close intFileNo
> End Sub
> 
> どのあたりがおかしいのでしょうか?教えてください。

Form_Loadイベントのときは基本的にまだ画面が表示されていませんので、
ユーザからの入力はText2.Textには入っていませんが、それはよろしいのですか?

ユーザからの入力が終わったというイベントはないので、
LostFocusイベントか、Validateイベントでチェックするのか、
CommandButtonのClickイベントでチェックするとよいでしょう。

ステップ実行するとか、Debug.Printを使うとかして、
自分の予想する通りの挙動になっていない場所がどこかをまず確認しましょう。
#45870-0
RE#45869:判定
> > ただいま、判定のプログラムを作っています。
> > 内容は、ログイン時に、テキストボックス2に名前を入力します。
> > そしてその名前が過去にテキストデータの中に登録されていた場合、
> > コマンド1ボタンを押させないというものです。
> > 一応テキストデータを読み込ませ、変数に格納して、
> > それを参照して、テキストボックスに入力したデータが
> > 過去に入力があったかどうかを判定しています。
> 
> 手っ取り早く直すならこうかなー。と。
> 
> Do Until EOF(intFileNo)
>     Line Input #intFileNo, strRecBuff
>     If login.Text2.Text = strRecBuff Then
>         Command1.Enabled = False
>     End If
> Loop
> 
> たぶん勘違いなされているようなのですが
> > Do Until EOF(intFileNo)
> >     Line Input #intFileNo, strRecBuff
> > Loop    
> Line Inputで読み込んで、また読み込んでーとやったら最後の一行しか取得できません。
> なので一番最後の行にあるかどうかしか確かめていません。
> 
> #こういうのでは色々方法はありますが…。

アドバイスどおりやってみたのですが、どうもEnabledでFlaseになってくれません。
ちゃんとボタン押せちゃいます・・・(悩
うーんどこがわるいのか。。また考え直します
#45872-0
RE#45871:判定
> Form_Loadイベントのときは基本的にまだ画面が表示されていませんので、
> ユーザからの入力はText2.Textには入っていませんが、それはよろしいのですか?

追記。
このForm_Loadイベントのフォームとloginフォームが
別のフォームならこの限りではありません。
#45873-0
RE#45871:判定
> 
> >     Close intFileNo


> Form_Loadイベントのときは基本的にまだ画面が表示されていませんので、
> ユーザからの入力はText2.Textには入っていませんが、それはよろしいのですか?

え?そうですか?別フォームにある、テキストボックスに名前を入力した後にOKを押すと
この判定フォームにうつって、前のフォームで打った名前とテキスト内の過去データを
参照して、判定してるんですけどね〜

エラーはでてないのですが、
もう少し調査してみます
このページと関連する記事:
#14278-0DO〜Loop分とLine Input文で全文を読み込み2001-02-01(木) 16:50
#20778-0メモ帳の保存や開くを再現するには?2001-05-09(水) 14:44
#9302-0テキストボックスへの読み込みで2000-07-01(土) 23:57
#46280-0テキストファイルの読み込み2001-08-29(水) 11:01
#10949-0変数の値の取得について2000-05-26(金) 00:20
#22999-0一行づつ読み取り、各テキストボックスへ・・・2001-09-06(木) 19:35
#508-3テキストファイルを一気に読み込みたい。2003-12-05(金) 20:54
#7798-0読み込みについて2000-04-28(金) 01:33
#4628-0RE#4625:line input ステートメントでの読みこみ1999-12-28(火) 02:46
#740-0履歴ボタン2002-05-21(火) 13:16
お探しの情報は見つかりましたか?お困りの問題は解決しましたか?
サイト内検索, 似た記事検索で見つからなくてもあきらめずに掲示板で質問してみましょう。
VB初心者友の会があなたのお役に立てれば幸いです。また、本ページの投稿者の方々にこの場を借りて感謝致します。
本ページは過去ログを集めて自動構成しています。よろしければこのページに関するフィードバックをお願いします。
(※ 構成の誤り、広告等の不適切な記事、リンク切れ、読めないページの報告など)