2016-08-15 3 views
0

私は今、vb6で自分のプログラムを動作させる方法を苦労しています。コマンドボタンの機能は、TLoginR.textにデータベース内のテキストが同じ場合、「ユーザー名が使用できません...」というメッセージボックスが表示されます。ここで問題は、私は新しいテキストを入力し、データベース内にない場合は、プロンプトがまだポップアップ。私は親切に助けを求める必要があります。登録までdoを使ったデータベース

コード:

Private Sub CRegR_Click() 

    Dim user as string 
    Dim pass as string 
    Dim prompt as string 

    RegR.Refresh 
    user = TLoginR.Text 
    pass = TPassR.Text 

    Do Until Regr.Recordset.EOF 
     If RegR.Recordset.Fields("Username").Value = user Then 
     prompt = MsgBox("Username not available, please try another one!", vbOKCancel) 
     If (prompt = 1) Then 
      TLoginR.Text = "" 
      TPassR.Text = "" 
      Register.show 
     Else 
     End If 
     Exit Sub 
     Else 
     RegR.Recordset.MoveNext 
     End If 
    Loop 

    RegR.Recordset.Fields("Username").value = user 
    RegR.Recordset.Fields("Password").value = pass 
    RegR.Recordset.Update 
    Register.Hide 
    Login.Show 

End Sub 
+0

「RegR.Recordset」が1つのレコードしか取得していないことは確かですか?複数のレコードが取得されている可能性があり、入力しているテキストがレコードのいずれかにある場合があります。 –

+0

はいTLoginR.text内のテキストに「username」のフィールドのレコードがないかどうかを確認したい場合は、存在する場合は「usernameが利用できません...」というメッセージが表示されますそうでなければ、そのレコードに新たに追加されます。 –

+0

いくつかの基本的なトラブルシューティングを開始する必要があります。ループの前にuserのためにdebug.Printステートメントを追加し、それがあなたの考えであるかどうかを確認してください。あるいは、少なくともあなたのmsgboxにそれを加えて、ユーザが何を入力しようとしたかを伝えます。また、field.usernameをdebug.printしてください。プロンプト応答を確認するときは、最終的に1の代わりに定数vbOKを使用して可読性を確保してください – dbmitch

答えて

0

私はあなたのレコードセットは、テーブル内のすべてのレコードが含まれているという仮定を作るつもりです。また、空のユーザー名を他の場所から守ることを前提としています。私はあなたがおそらくあなたが持っていることを期待していないレコードを持っていると思うあなたはそれを反復を開始する前に、レコードセットを最初のレコードに移動していないためです。しかし、それは私がそのコードを見ることができないために行っている仮定に基づいています。

Private Sub CRegR_Click() 

    Dim user As String 
    Dim pass As String 
    Dim prompt As String 

    RegR.Refresh 
    user = TLoginR.Text 
    pass = TPassR.Text 

    RegR.Recordset.MoveFirst 'return to the first record 
    Do Until RegR.Recordset.EOF 
     If StrComp(RegR.Recordset.Fields("Username").Value, user, vbTextCompare) = 0 Then 
     prompt = MsgBox("Username not available, please try another one!", vbOKCancel) 

     If (prompt = vbOK) Then 
      TLoginR.Text = "" 
      TPassR.Text = "" 
      Register.Show 
     Else 
      'do domething? 
     End If 

     Exit Sub 
     Else 
     RegR.Recordset.MoveNext 
     End If 
    Loop 

    RegR.Recordset.Fields("Username").Value = user 
    RegR.Recordset.Fields("Password").Value = pass 
    RegR.Recordset.Update 
    Register.Hide 
    Login.Show 

End Sub 
関連する問題