アクセス2003
VS 2010 C#
件名のタイトルにあるように、私は問題を抱えています。これは、私が以前に尋ねた質問、ここに関連しています。このスレッドでmodが問題ないことを願っていますが、よくわかりません。
@@Identity
Martin Parkinは、C#およびMS-Accessで使用する場合は、InsertとSelectの間の接続を閉じないようにアドバイスしました。そうではないことがわかるまで、私はそれが機能するようになったと思いました。正直なところ、この問題を解決する方法がわかりません。だから誰かが私を助けることができれば私はそれをいただければ幸いです。
これは私のbtnLoginメソッドです。
cmd.CommandText = "INSERT INTO LoginLogTable (UserName, LoggedInDate, LoggedInTime) VALUES (@UserName, @LoggedInDate, @LoggedInTime)";
cmd.Parameters.AddWithValue("@UserName", txtUserName.Text);
cmd.Parameters.AddWithValue("@LoggedInDate", DateTime.Now.ToShortDateString());
cmd.Parameters.AddWithValue("@LoggedInTime", DateTime.Now.ToString("HH:mm"));
cmd.Connection = myCon;
myCon.Open();
cmd.ExecuteNonQuery();
cmd.CommandText = "SELECT @ID = @@IDENTITY";
// cmd.Parameters.AddWithValue("@ID", OleDbType.WChar); << tried this, unsuccessful
int id = (int)cmd.ExecuteScalar(); // getting the same error?
myCon.Close();
これは私のbtnLogOutメソッドです...
OleDbCommand cmd = new OleDbCommand();
cmd.CommandType = CommandType.Text;
int id = 0;
cmd.CommandText = " UPDATE [LoginLogTable] SET [LoggedOutDate] = @LoggedOutDate, [LoggedOutTime] = @LoggedOutTime WHERE [ID] = @ID";
cmd.Parameters.AddWithValue("@ID", id);
cmd.Parameters.AddWithValue("@LoggedOutDate", DateTime.Now.ToShortDateString());
cmd.Parameters.AddWithValue("@LoggedOutTime", DateTime.Now.ToString("HH:mm"));
cmd.Connection = myCon;
myCon.Open();
cmd.ExecuteNonQuery();
Close();
または
btnLogin
私がやったら方法で
cmd.CommandText = "SELECT @ID = @@IDENTITY";
その後を非表示にcmd.ExecuteNonQuery();
します。その後、日付と時刻はデータベースに記録されますが、ログアウトのために日付と時刻はデータベースに保存されません。
問題がbtnLogin
方法にあるのか、btnLogOut
方法にあるのか、あるいはその両方にあるのかわかりません。
実用的なソリューション
もともと私はしました
cmd.CommandText = " UPDATE [LoginLogTable] SET [LoggedOutDate] = @LoggedOutDate,
[LoggedOutTime] = @LoggedOutTime WHERE [ID] = @ID";
cmd.Parameters.AddWithValue("@ID", id);
cmd.Parameters.AddWithValue("@LoggedOutDate", DateTime.Now.ToShortDateString());
cmd.Parameters.AddWithValue("@LoggedOutTime", DateTime.Now.ToString("HH:mm"));
それから私はこれをしました
cmd.CommandText = " UPDATE [LoginLogTable] SET [UserName] = @UserName, [LoggedOutDate] =
@LoggedOutDate, [LoggedOutTime] = @LoggedOutTime WHERE ID = @ID";
cmd.Parameters.AddWithValue("@UserName", txtUserName.Text);
cmd.Parameters.AddWithValue("@LoggedOutDate", DateTime.Now.ToShortDateString());
cmd.Parameters.AddWithValue("@LoggedOutTime", DateTime.Now.ToString("HH:mm"));
cmd.Parameters.AddWithValue("@ID", id);
DStanleyとGordThompsonに感謝します。