Visual Basic for Applications を初めて使用します。現在のプログラムにログイン システムがあります。以下を読むとシステムが理解できます。次のようなテーブルを持つ Access データベースがあります。
Name : Cookies
----------------------------
ID | Nme | Val |
----------------------------
フォームを閉じると、テーブルがクリアされ、その内容がすべて削除されます。これで、ユーザーがサインインすると、行が追加されます:-
----------------------------
(id) | "user" | username |
----------------------------
ここで、ユーザーは自分の ID とパスワードを index.vb の形式で入力します。アクセス データベースに行を追加するコマンドも index.vb ファイルにあります。行が追加されると、index.vb ファイルが非表示になり、userpage.vb ファイルが表示されます。ここで、ユーザーがログインすると、(アクセス ファイルを手動で更新することにより) アクセス ファイルに行が適切に追加され、ウィンドウが閉じられるとテーブル内のすべてが適切に削除されることがわかりました。したがって、行の挿入と削除には問題はありません。したがって、明らかに、問題は表示部分にあります。ユーザー名を表示するための私のコードは次のとおりです(コードはuserpage.vbファイルにあります):-
Dim Username As String = ""
Dim Conn As New OleDb.OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Software\db.accdb")
Conn.Open()
Dim Cmd As New OleDb.OleDbCommand("Select Val From Cookies Where Nme='user'", Conn)
Dim Reader = Cmd.ExecuteReader
Do While Reader.Read
Username = Reader.Item("Val")
Loop
Label1.Text = "Welcome " & Username
Conn.Close()
行が追加された場合でも、表示される出力は「ようこそ」であり、ユーザー名は「」です。さて、これは、データベースに問題が追加されるのと同じ詳細を持つ行をアクセス データベースに手動で追加すると、プログラムが正常に動作することを実験することによってもわかりました。もちろん、どんな助けでも大歓迎です。この長い投稿を読んでくれてありがとう。
更新 1 (@Dimple の提案による) 挿入用の私のコードは次のとおりです (このコードは index.vb ページにあります):-
Dim usernameinput As String = TextBox1.Text
Dim Cmmd As New OleDb.OleDbCommand()
Cmmd.Connection = Conn
Cmmd.CommandText = "INSERT INTO Cookies (Nme, Val) Values('user','" & usernameinput & "')"
Cmmd.ExecuteNonQuery()
Dim Userpage As New User_page
Me.Hide()
Userpage.Show()