以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 车辆管理数据库(带串口的)的一个功能问题 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=21546) |
-- 作者:fanwei1111 -- 发布时间:2012/7/16 21:44:00 -- 车辆管理数据库(带串口的)的一个功能问题 要做一套车辆管理系统(带串口的),我已经做到串口刷卡有数据就接收,然后把接收的数据放入表中(这个表有接收串口数据的时间),现在想做这样的功能,要求每张卡20分钟内不能重复刷卡,20分钟后才可以再次刷卡,输入数据到表中。如何实现间隔一段时间才能再次输入数据到表中,请高手指教!!! |
-- 作者:lihe60 -- 发布时间:2012/7/16 22:21:00 -- 如果是请教,应发附件。 如果是定制软件,应留下你的联系方式。 |
-- 作者:blackzhu -- 发布时间:2012/7/17 7:53:00 -- 楼主的要求到是没有碰到过,过一会做个例子看看. |
-- 作者:狐狸爸爸 -- 发布时间:2012/7/17 8:10:00 -- 如果每张卡都有ID,那么每次刷卡记录一下刷卡时间,并检测最近一次刷卡的时间,如果没有超过20分钟,就给出提示,并拒绝登记本次刷卡。 关于如何找出最后一次刷卡的数据,可以看看: http://www.foxtable.com/help/topics/0396.htm
|
-- 作者:blackzhu -- 发布时间:2012/7/17 8:13:00 -- 代码如下,你试试: If e.DataTable.DataRows.Count = 0 Then \'如果是一个空表 Return \'那么返回 End If Dim dr As DataRow = e.DataTable.DataRows(e.DataTable.DataRows.Count - 1) \'获得最后一行 Dim d As Date = Date.Now \'定义目前的时间 Dim i As Integer = DateDiff("n",d,dr("第一列")) \'获取两个时段的时间 If i < 20 Then \'如果小于20分钟 MessageBox.Show("不足20分钟,不能新增行") \'提示 时间不到不能新增 e.Cancel = True \'取消新增 End If |
-- 作者:狐狸爸爸 -- 发布时间:2012/7/17 8:22:00 -- 呵呵,老朱的代码有不足,你这样的话,20分钟内只能刷一张卡,而不是一张卡20分钟内只能刷一次。 比较合理的大概如此: Dim id As String = “本次刷卡获得的ID” dr = DataTables("xxx").Find("卡ID = \'" & Id & “\'", "刷卡时间 Desc") \'找出最后一次订购PD01产品的记录 if dr IsNot Nothing Then Dim dt As Date = dr("刷卡时间") if (Date.Now - dt) .TotalSeconds < 20 Then MessageBox.Show("一张卡20分钟内只能刷一次") Return End If End f dr = DataTables("xxx").AddNew dr("卡ID") =ID dr("刷卡时间") = Date.Now [此贴子已经被作者于2012-7-17 8:22:48编辑过]
|
-- 作者:blackzhu -- 发布时间:2012/7/17 9:11:00 -- 对哦. |
-- 作者:飞 -- 发布时间:2012/7/17 9:16:00 -- 这个用SQLCommand会好一点吧,因为可能不同的刷卡机连接不同的客户端,直接取后台数据来对比
Dim SQLCmd As New SQLCommand SQLCmd.ConnectionName = "数据源" SQLCmd.CommandText = "SELECT COUNT([_Identify]) FROM 表名 WHERE 卡ID = \'" & "接收到的卡号" & "\' AND DATEDIFF(MI,刷卡时间,GETDATE()) < 20" Dim Cnt As Integer = SQLCmd.ExecuteScalar If Cnt > 0 Then Msgbox("您已经在20分钟内刷过卡啦,不能再重复刷了!",64,"提示") : Return [此贴子已经被作者于2012-7-17 9:22:29编辑过]
|
-- 作者:狐狸爸爸 -- 发布时间:2012/7/17 9:20:00 -- 嗯,如果几台电脑的话,只能用sql判断的了。 不过也可以刷卡前AppendLoad一下这个用户的最新数据。 |
-- 作者:blackzhu -- 发布时间:2012/7/17 10:53:00 -- 如果是外部数据源,应该用飞的 |