麻烦大哥了,帮看看吧,很急,这样的Sql语句该怎样写? Delphi / Windows SDK/APIhttp://www.delphi2007.net/DelphiDB/html/delphi_20061216082939279.html
有两个表,
Table1: LoginoutInfo --记录系统管理员进出时的时间,当然,用“结束任务”
的方法关闭程序是记录不到的,会只有Login,而没有Logout。
LoginoutInfo(user(char(20)),LogTime(DateTime),LogStatus(char(10)))
记录是这样的:
admin 2006-12-15 10:25:36 login
admin 2006-12-15 10:55:36 logout
admin 2006-12-15 10:59:10 login --这里被结束任务,所以没有logout
user1 2006-12-15 11:09:20 login
user1 2006-12-15 11:15:11 logout
......
Table2: EventLogInfo
--记录管理员在系统里所有的操作
EventLogInfo(EvtTime(DateTime),EvtContent(nvarchar(100)))
记录是这样的:
2006-12-12 10:26:07 Delete a record
2006-12-12 10:26:12 add a record
2006-12-12 11:01:07 backup database
2006-12-12 11:10:54 Delete a user
....
我想得到这样的结果(其实就是把这些操作是谁做的加在描述后面):
2006-12-12 10:26:07 Delete a record By admin
2006-12-12 10:26:12 add a record By admin
2006-12-12 11:01:07 backup database By admin
2006-12-12 11:10:54 Delete a user By user1
....
请问,这样的语句如何写?
多谢了,很急,
delphi社区人气真的不行了!!
一次只能有一个管理员登陆
建议将表EventLogInfo增加一个用户字段来记录登陆的用户。
insert into EventLogInfo values(.....Sql语句一样的写
Parambyname('EvtTime').value := now;
parambyname('EvtContent').value := '动作‘+’用户‘;
create table #LoginoutInfo(logNo char(20),LogTime DateTime,LogStatus char(10))
insert into #LoginoutInfo
select 'admin','2006-12-15 10:25:36','login'
union all select 'admin','2006-12-15 10:55:36','logout'
union all select 'admin','2006-12-15 10:59:10','login'
union all select 'user1','2006-12-15 11:09:20','login'
union all select 'user1','2006-12-15 11:15:11','logout'
create table #event(EvtTime DateTime,EvtContent nvarchar(100))
insert into #event
select '2006-12-12 10:26:07', 'Delete a record'
union all select '2006-12-12 10:26:12', 'add a record'
union all select '2006-12-12 11:01:07', 'backup database'
union all select '2006-12-12 11:10:54', 'Delete a user'
表帮大家建好了,
liaosummer
我明白您的意思,您的意思是说在记录eventlog的时候直接把操作人带上?
是的,
但是现在时间不允许了,
客户赶着要货,所以打算先用语句搞定,然后再改这里!!
特别多谢各位。。。
不知道楼主的意思是不是说,要找出EventLogInfo.EvtTime在LoginoutInfo.LogTime之内的记录还是怎样.这两个应该要有一定的关联的吧??
你都记下了是谁登陆的,记录动作的时候直接+用户名不就完了?
设个全局变量UserName
着急还走弯路。。。
没救啦
select a.Evttime,a.Evtcontent,b.user from table2 a left join table1 b on b.logtime < a.evtime order by b.logtime desc 取小于当前操作时间中的最晚时间处所登陆的管理员用户
不过,上面的几个大侠都说了最好在table2中添加 User记录
注:随手写的没测试!
select top 1 a.Evttime,a.Evtcontent,b.user from table2 a left join table1 b on b.logtime < a.evtime order by b.logtime desc
忘了top1 [sql server]