| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1932 人关注过本帖
标题:控制相同记录在5分钟之内不允许增加
只看楼主 加入收藏
wangguowu
Rank: 2
等 级:论坛游民
帖 子:73
专家分:18
注 册:2012-2-15
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:10 
控制相同记录在5分钟之内不允许增加
11.rar (4.26 KB)
图片附件: 游客没有浏览图片的权限,请 登录注册


请高手解决一下!
搜索更多相关主题的帖子: 记录 
2016-05-15 13:14
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:335
帖 子:9841
专家分:27213
注 册:2012-2-5
收藏
得分:10 
楼主的真实问题是什么,实际问题不是你说的这样吧。
要以诚待人啊

坚守VFP最后的阵地
2016-05-15 14:26
wangguowu
Rank: 2
等 级:论坛游民
帖 子:73
专家分:18
注 册:2012-2-15
收藏
得分:0 
因为是VFP+SQL 架构,不方便传数据和表单,就是在实际工作中遇到这样的问题,曾在网上求助过没有得到解决,也没有什么商业用途,纯个人爱好,在工作中帮单位编个小程序,仅此而已!
2016-05-15 16:45
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:335
帖 子:9841
专家分:27213
注 册:2012-2-5
收藏
得分:0 
是相同记录,还是相同字段值,这是两个不同的问题
如果是相同记录,两条记录的保存时间只要相差一秒,不可能是相同的。
楼主的问题没有表述清楚。

坚守VFP最后的阵地
2016-05-15 18:30
wangguowu
Rank: 2
等 级:论坛游民
帖 子:73
专家分:18
注 册:2012-2-15
收藏
得分:0 
回复 4楼 sdta
  sj                     xm     sfzh
2016-5-11 16:40 14 11  张三 610211198801220237
2016-5-11 16:41 33 11  张二 610211199101215971
2016-5-11 16:45 14 14  张三 610211198801220237 怎样控制这条记录在5分钟之内不能重复增加
引用网上一位朋友给的代码测试不成功!不知如何写!

*-
lcxm       = RTRIM(ltrim(THISFORM.text1.Value))
lcsfzh    =THISFORM.text2.Value
lcsj           =THISFORM.text3.Value
sele data1
SELECT MAX(sj) FROM data1 WHERE sfzh=lcsfzh INTO ARRAY lostsj
if type(lostsj)=.T.   &&筛选出相同身份证号码的记录
    if lcsj-sj>300  &&控制相同记录在5分钟之内不允许增加,此处出错
         MESSAGEBOX("与上次的记录时间超过5分钟,添加新记录",48,"信息提示")
        INSERT INTO data1 (name,sfzh,sj) VALUES (lcxm,lcsfzh,lcsj)
    ENDIF
ELSE
        MESSAGEBOX("无上次的记录,直接添加新记录",48,"信息提示")
       INSERT INTO data1 (name,sfzh,sj) VALUES (lcxm,lcsfzh,lcsj)
ENDIF

*-

2016-05-15 18:57
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:335
帖 子:9841
专家分:27213
注 册:2012-2-5
收藏
得分:0 
lcxm =alltrim(THISFORM.text1.Value)
lcsfzh=alltrim(THISFORM.text2.Value)
* lcsj           =THISFORM.text3.Value && 该行代码可以不要
SELECT sj FROM data1 WHERE alltrim(sfzh)==lcsfzh and datetime()-sj<300 INTO ARRAY lostsj
if _tally>0
    MESSAGEBOX("与上次的记录时间间隔小于5分钟,不能添加新记录",48,"信息提示")
else
    INSERT INTO data1 (name,sfzh,sj) VALUES (lcxm,lcsfzh,datetime())
endif

[此贴子已经被作者于2016-5-15 19:20编辑过]


坚守VFP最后的阵地
2016-05-15 19:10
wangguowu
Rank: 2
等 级:论坛游民
帖 子:73
专家分:18
注 册:2012-2-15
收藏
得分:0 
回复 6楼 sdta

谢谢 sdta
顺利通过!
2016-05-15 19:40
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:335
帖 子:9841
专家分:27213
注 册:2012-2-5
收藏
得分:0 
一定要讲问题表述清楚了,别人才好帮助你!

坚守VFP最后的阵地
2016-05-15 19:43
mywisdom88
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:191
帖 子:3147
专家分:8408
注 册:2015-3-25
收藏
得分:10 
https://bbs.bccn.net/thread-464688-1-1.html
vfp增加同一记录的时间间隔
vfp增加同一记录的时间间隔
如增加一第记录
2016-5-11 16:40 14 11  张三 610211198801220237
2016-5-11 16:41 33 11  张二 610211199101215971
2016-5-11 16:45 14 14  张三 610211198801220237 怎样控制这条记录在5分钟之内不能重复增加
求大侠指点
是不是这个啊
如是,在SQL2000中,可以处理的
--create table #tmp(姓名 varchar(10),卡号 varchar(19),时间 datetime)
--insert into #tmp(姓名,卡号,时间) values('张三','123456789012345678',getdate())
--insert into #tmp(姓名,卡号,时间) values('李四','987654321012345678',getdate())
--select * from #tmp

declare @dt datetime
declare @nm varchar(10)
declare @kh varchar(19)
set @dt=getdate()
set @nm='张三'
set @kh='123456789012345678'

if not exists(select  * from (select top 1 * from  #tmp order by 时间 desc)a where a.姓名=@nm and a.卡号= @kh and datediff("mi",a.时间,@dt)<5)
begin
  insert into #tmp(姓名,卡号,时间) values(@nm,@kh,@dt)
  select 1 as res
end
else
  select 0 as res
--以上在 SQL2000测试通过。#TMP 为 SQL2000的临时表,如果在VFP中使用,用text to ....endtext,同时,要把 @ 改为 ?
dt=datetime()
text to insert_str noshow
if not exists(select  * from (select top 1 * from #tmp order by 时间 desc)a where a.姓名=?nm and a.卡号= ?kh and datediff("mi",a.时间,?dt)<5)
begin
  insert into #tmp(姓名,卡号,时间) values(?nm,?kh,?dt)
  select 1 as res
end
else
  select 0 as res
endtext
sqlexec(nhandle,insert_st,'sqltable')
返回表 sqltable.res 为1时,表示成功插入,0 时 表示5分钟内,或者连接失败。



[此贴子已经被作者于2016-5-15 21:08编辑过]

2016-05-15 20:16
mywisdom88
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:191
帖 子:3147
专家分:8408
注 册:2015-3-25
收藏
得分:0 
text to insert_str noshow
if exists(select  * from (select top 1 * from  #tmp order by 时间 desc)a where a.姓名=@nm and a.卡号= @kh and datediff("mi",a.时间,@dt)>5)
begin
  insert into #tmp(姓名,卡号,时间) values(@nm,@kh,@dt)
  select 1 as res
end
else
  select 0 as res
endtext
?sqlexec(nhandle,insert_str,'sqltable')
if res=1
   messagebox("插入成功")
else
   messagebox("插入失败")
endif
我这里用的是SQL2000的临时表 #tmp,你自己根据你的表,自己修改,其实,还可以做成存储过程。在VFP使用,要把 @ 改为 ?


[此贴子已经被作者于2016-5-15 21:00编辑过]

2016-05-15 20:20
快速回复:控制相同记录在5分钟之内不允许增加
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.025032 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved