有关于记录时间的一个问题,用sqlserver和delphi中的query部件,请各位多多指教。。。。 (50分)

  • 主题发起人 主题发起人 loutian
  • 开始时间 开始时间
L

loutian

Unregistered / Unconfirmed
GUEST, unregistred user!
我想实现一个记录用户登录的情况,我先用insert... select.... where语句,然后用
update...set...where语句代码如下:
with dm2.query2 do
begin
close;
sql.clear;
sql.add('insert table1 (用户名,用户类型,登录时间,离开时间)');
sql.Add('select 用户名,用户类型,getdate(),getdate() from tablename2 ');
sql.add('where 用户名=:username');
parambyname('username').asstring:=edit1.text;
prepare;
execsql;
end;
name:=edit1.Text;



with dm2.query2 do
begin
close;
sql.clear;
sql.add('update 工作日志');
sql.Add('set 离开时间=getdate()');
sql.add('where 登录时间=离开时间');
prepare;
execsql;
end;
这是我编的一段代码,当用户登录时,先在table1中记录用户名和用户时间及登录时间
其中我把离开时间和登录时间的值符为一样,然后再通过一个update来修改离开时间的
,值上面那段代码是可以执行的,可是不太合理,我想在修改离开时间时要实现用户名
和登录时间的验证,在insert中就把用户名和登录时间符给两个变量,在update中与表
中的信息进行比较,望能手,多多留言

 
你在用户退出时修改TABLE1的离开时间不就行了
 
可是怎么改,我想问一下再用update时where中是不是不能有两个条件
 
可以有多个条件。
你这样不加用户名的修改有很大问题,如果两个以上用户登陆了,一个退出时,不是要
改所有在线的用户的退出时间了吗?
我想你的Table1就是工作日值吧。
退出时应该根据用户名来改记录啊,为什么要用时间呢?
sql.add('update 工作日志');
sql.Add('set 离开时间=getdate()');
sql.add('where 用户名=username');
如果你需要使用多个条件页可以
update yourtable
set field1=getdate()
where field2=value2 and field3=value3 and .......

 
用用户名和登陆时间一起做条件才好,请问还有没有更好的方法,比如用,存储过程,
这只是一个记录用户登陆的工作日志表,我还想在此表中添加记录登陆用户的操作情况,如
添加用户,删除用户,修改用户等,那我该怎么编,能不能用触发器来编呢,我看了一下,触发器
是对添加,删除,修改进行自动触发的,现在我的要求是触发后还要把删除某一信息的用户
信息如用户类型,用户名,操作类型添加到工作日志表中,那必定要用到一些外部变量,用触发器
可以实现吗,望高手指点
 
触发器不好用外部变量,可以用存储过程实现吧!
 
我想问一下,按常规来说各位如果要做一个像用户操作管理,即类似于工作日志表这样的
程序时,采用什么样的结构来实现的呢,望有经验者指点方向
 
其实这样的语句表面上看起来没问题,但实际运行时却会出现问题。
因为没把用户异常退出(比如死机)考虑在内。
一旦用户是异常退出,而下次是正常退出时,程序会连上次的记录一同修改。
所以我觉得,将退出字段改为String型,在登录时Insert语句时将其赋值为一个字符串(
如:未退出)。
即用户登录时插入一条记录:
登录时间 未退出
正常退出时将其修改为
登录时间 退出时间
如果是异常退出,则下次登录时先查找该用户有无“退出时间”字段是“未退出”的记录,
如果有,将“退出时间”修改为“异常退出”。
 
谢谢你的提议,谁有先例,指导一下该怎么做
 
后退
顶部