ログイン時刻とログアウト時刻を1レコードに格納するには

解決


うまくいくうま  2004-01-05 20:44:18  No: 111063  IP: [192.*.*.*]

すいません。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

(以下略)

編集 削除
魔界の仮面弁士  2004-01-06 03:24:10  No: 111064  IP: [192.*.*.*]

クライアント(VBアプリのあるPC)の時刻を格納するのですか?
複数のPCから接続される場合には、サーバー(DBのあるPC)の時刻を格納した方が良いかも。

> 下記の記述でおこなっているのですが、ログイン時とログアウト時を
> まとめて1レコードで格納するにはどうすればいいのでしょうか。

WHERE句を指定したUPDATE SQLを発行するか、もしくは、主キーの値でレコードを検索してから出力すれば良いかと。

編集 削除
うまくいくうま  2004-01-06 20:30:42  No: 111065  IP: [192.*.*.*]

魔界の仮面弁士様  
ありがとうございました。

>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行でログインとログアウトが表示できました!
ありがとうございました。

注:サーバー側の時刻を利用する方法、ついでにお教えいただけないでしょうか。

編集 削除
魔界の仮面弁士  2004-01-06 21:05:34  No: 111066  IP: [192.*.*.*]

> サーバー側の時刻を利用する方法

「UPDATE SQL中で、DBの時刻関数を使う」というだけです。
SQL ServerならばGETDATE、OracleならばSYSDATE、JetならばNOWあたりですかね。

編集 削除
うまくいくうま  2004-01-07 14:15:28  No: 111067  IP: [192.*.*.*]

ありがとうございました。

編集 削除