2009-03-07 17 views
0
Private Sub cmdOK_Click() 
Adodc1.Recordset.MoveFirst 
Do While Not Adodc1.Recordset.EOF 
     If Adodc1.Recordset.Fields(0) <> txtuser.Text Or Adodc1.Recordset.Fields(1) <> txtPassword.Text Then 

      MsgBox "Please verify login details", vbInformation + vbOKOnly, "Login Denied" 
      txtuser.SetFocus 
      txtuser.Text = "" 
      txtPassword.Text = "" 
     Else 
      Unload Me 
      Load Main 
      Main.Show 
     End If 
     Adodc1.Recordset.MoveNext 
     Loop 
End Sub 

上記のコードスニペットを見て、変更が必要な場合は教えていただければ幸いです。これは、SQL Server 2005 DBに接続するログインフォームに使用するコードです。今はなぜこれが機能していないのですか?これは、次の行ではなく、2つの列の最初の行からのみデータを取得するようです。Visual Basicのログインフォームクエリ

答えて

2

私は一歩前倒しして、これをすべて書き直します。データベースにユーザー名とパスワードを送信して、すべてのユーザー名とパスワードをアプリケーションに送信せずにループする必要があります。 DBMSにあなたのための仕事をさせてください。私はまた、あなたがプレーしているようにプレーンテキストとしてパスワードを格納することを控えることをお勧めします。この情報は一般的なものであり、検索することで見つけることができますが、特定の問題がある場合は返信してください。

+0

私はあなたの提案と後の段階で世話をすることに感謝しますが、今は上記のコード(どれくらい一般的であろうか)は私には分かりませんが、 ■なぜ最初の行だけをフェッチするのですか? –

+0

なぜ最初の行だけをフェッチするのですか?誰が教えてくれる?あなたのコードにはクエリはありません。だからこそ、データベースでコードを書く方法を再考するように、コリチウムが正しいのです。ドラッグアンドドロップDBコントロールは、MSが決して提供してはならないものです。 – HardCode

+0

次に、DBに接続する部分を次に示します。--Adodc1.ConnectionString = "DRIVER = {SQL Server}; SERVER = MyServer \ SQLEXPRESS; Trusted_connection = yes; DATABASE = Testingz;" Adodc1.RecordSource = "セキュリティから選択*" lblBind.DataSource = Adodc1を設定 –