すいません。1点SQLでお教えください。
FORMのロード時に「ログイン時間とその担当者コード」をDBに格納し、
Command5(終了ボタン)のClick時に「ログアウト時間とその担当者コード」を
同じDBに格納しています。
下記の記述でおこなっているのですが、ログイン時とログアウト時を
まとめて1レコードで格納するにはどうすればいいのでしょうか。
DBの項目
テーブル名:LOGIN_TIME
フィールド:担当者コード、担当者名、担当者名(カナ)、LOGIN日時、LOGOUT日時
※担当者コードは変数usernameに代入されている。
'ログイン時間を記録
Private Sub Form_Load()
Dim rsL As New ADODB.Recordset
rsL.Open "LOGIN_TIME", cn, adOpenKeyset, adLockPessimistic
rsL.AddNew
rsL![担当者コード] = username
rsL![LOGIN日時] = Now
rsL.Update
rsL.Close
(以下略)
-----------------------------------------------------------------
’ログアウト時間を記録
Private Sub Command5_Click()
Dim rsL As New ADODB.Recordset
rsL.Open "LOGIN_TIME", cn, adOpenKeyset, adLockPessimistic
rsL.AddNew
rsL![担当者コード] = username
rsL![LOGOUT日時] = Now
rsL.Update
rsL.Close
(以下略)
クライアント(VBアプリのあるPC)の時刻を格納するのですか?
複数のPCから接続される場合には、サーバー(DBのあるPC)の時刻を格納した方が良いかも。
> 下記の記述でおこなっているのですが、ログイン時とログアウト時を
> まとめて1レコードで格納するにはどうすればいいのでしょうか。
WHERE句を指定したUPDATE SQLを発行するか、もしくは、主キーの値でレコードを検索してから出力すれば良いかと。
魔界の仮面弁士様
ありがとうございました。
>WHERE句を指定したUPDATE SQLを発行するか、もしくは、主キーの値でレコードを>検索してから出力すれば良いかと。
ログアウト時に後者の方法で格納するようにしました。
'ログアウト時間を記録
myQql = "SELECT LOGIN_TIME.担当者コード, LOGIN_TIME.LOGOUT日時 From LOGIN_TIME WHERE LOGIN_TIME.担当者コード = '" + username + "' AND (SELECT MAX(LOGIN日時) FROM LOGIN_TIME)"
rsL.Open myQql, cn, adOpenKeyset, adLockPessimistic
rsL![担当者コード] = username
rsL![LOGOUT日時] = Now
rsL.Update
rsL.Close
1行でログインとログアウトが表示できました!
ありがとうございました。
注:サーバー側の時刻を利用する方法、ついでにお教えいただけないでしょうか。
> サーバー側の時刻を利用する方法
「UPDATE SQL中で、DBの時刻関数を使う」というだけです。
SQL ServerならばGETDATE、OracleならばSYSDATE、JetならばNOWあたりですかね。
ありがとうございました。
ツイート | ![]() |