2012-01-28 1 views
0

For Each Statementを使用してユーザー名とパスワードを確認しようとしています。それが有効であれば、welcomeというメッセージボックスが表示されます。そうでなければ、「間違っている」というメッセージボックスが、テーブルをループするまで何度もポップアップし続けます。どのように私はこれを訂正し、それを1回だけ表示させることができます。また、それを検証するときに、新しいウィンドウがユーザーに表示されます。テキストボックスにFirst NameとLast Nameが表示されます。ユーザー情報を編集してからdbに保存するにはどうすればいいですか?助けてくれてありがとう。sqlテーブルのチェックからのログインの確認

 Private Sub Button1_Click(sender As System.Object, e As System.Windows.RoutedEventArgs) Handles Button1.Click 

    Dim data As New datalinq1DataContext 

    For Each row In data.Users 
     If Not row.username = TextBox1.Text And Not row.password = TextBox2.Text Then 
       Messagebox.Show("Incorrect") 
     Else 
      MessageBox.Show("Welcome " + row.fname + " " + row.lname) 
      Dim window As New Window1 
      window.TextBox1.Text = row.fname 
      window.TextBox2.Text = row.lname 
      window.TextBox3.Text = row.username 

      window.Show() 
      Exit For 
     End If 

    Next 


End Sub 

答えて

2

メッセージボックスの後にEXIT FORを追加できますが、なぜユーザーテーブルで複数のレコードがチェックされているのでしょうか。入力したユーザー名だけにユーザーテーブルをフィルターする必要があります。

+0

私はそれを助けたことがない、のための出口を試してみました。あなたがフィルタリングについて何を意味するかの例を私に教えてもらえますか?私はdbとテーブルで作業するのが初めてです。ありがとう:) – TMan

+0

ユーザー名を確認するだけであれば、パスワードが正しいかどうかをチェックする方法は? – TMan

+0

私はVBとlinqに慣れていませんが、次のようなものを試してみてください: '各行のデータuser.Users Where = TextBox1.Text' 次に、各行にパスワードをチェックします確かに何らかの理由で)。 そうでなければ、where句にパスワードを追加するだけです。 –

0

テーブル内のすべてのユーザーをルーピングすると、すぐにパフォーマンスの問題が発生します。

foreachを使用する代わりに、適切なLINQ拡張メソッドにアクセスできない理由を考えてみてください。参照してくださいSystem.LinqSystem.Data.Linq

対応するユーザー名とパスワードを持つユーザーをチェックする適切な方法は、次のようになります。

var potentialUser = data.Users 
          .SingleOrDefault(user => 
           user.Username == userName && 
           user.Password = passWord 
         ); 

if(potentialUser != null) 
    Messagebox.Show("Welcome") 
else 
    Messagebox.Show("Incorrect") 
関連する問題