| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1914 人关注过本帖
标题:关于修改保存时检查重复记
只看楼主 加入收藏
永顺彭英宏
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2020-4-12
结帖率:66.67%
收藏
已结贴  问题点数:20 回复次数:9 
关于修改保存时检查重复记
问题:在修改后保存检查重复记录,本身此“单号”记录怎样过滤掉。新增时保存没有问题。

**检查是否有重复记录:客户名称,电话,手机,微信 只要有一个相同,就不能保存。
    SELECT zzyxkh
    =requery("zzyxkh")
    LOCA for allt(单号)<>allt(thisform.text1.Value) and allt(客户名称)=allt(thisform.text4.Value)  OR allt(电话)=allt(thisform.text7.Value) OR allt(手机)=allt(thisform.text7.Value) OR allt(微信)=allt(thisform.text7.Value)
    IF found()
        IF messagebox("已经有此记录,请查询:客户名称、电话、手机、微信是否有相同的 !",4+32,"提示")=6
            SET filter to  allt(单号)<>allt(thisform.text1.Value) and allt(客户名称)=allt(thisform.text4.Value)  OR allt(电话)=allt(thisform.text7.Value) OR allt(手机)=allt(thisform.text7.Value) OR allt(微信)=allt(thisform.text7.Value)
            thisform.grid1.SetFocus
        ENDIF
    ELSE
搜索更多相关主题的帖子: Value 名称 thisform 保存 检查 
2020-04-26 07:35
mywisdom88
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:191
帖 子:3147
专家分:8408
注 册:2015-3-25
收藏
得分:10 
表,一般会有个字段,是不能修改的,比如 序号,ID号,,,等等,这个序号,ID号,可以是自增的。如
zzyxkh(序号,单号,客户名称,电话,手机,微信),其中“单号,客户名称,电话,手机,微信”都可以修改,只有“序号”不能修改
c名称 = allt(thisform.text4.Value)
c电话 = allt(thisform.text5.Value)
c手机 = allt(thisform.text6.Value)
c微信 = allt(thisform.text7.Value)
LOCA FOR 序号#n序号 and (客户名称=c名称 or 电话=c电话 or 手机=c手机 or 微信=c微信)
这样,是不是整洁,好看多了。
2020-04-26 08:29
永顺彭英宏
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2020-4-12
收藏
得分:0 
谢谢:mywisdom88 ;但是改之后出现:只要是修改记录,当客户名称等与“其它记录”相同也可以保存。
LOCA for allt(单号)#allt(thisform.text1.Value) and (allt(客户名称)=allt(thisform.text4.Value)  OR allt(电话)=allt(thisform.text7.Value) OR allt(手机)=allt(thisform.text7.Value) OR allt(微信)=allt(thisform.text7.Value))
2020-04-26 10:36
mywisdom88
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:191
帖 子:3147
专家分:8408
注 册:2015-3-25
收藏
得分:0 
以下是引用永顺彭英宏在2020-4-26 10:36:27的发言:

谢谢:mywisdom88 ;但是改之后出现:只要是修改记录,当客户名称等与“其它记录”相同也可以保存。
LOCA for allt(单号)#allt(thisform.text1.Value) and (allt(客户名称)=allt(thisform.text4.Value)  OR allt(电话)=allt(thisform.text7.Value) OR allt(手机)=allt(thisform.text7.Value) OR allt(微信)=allt(thisform.text7.Value))


*!* 建立测试数据
*!* 序号,单号,名称,电话,手机,微信
CLEAR
CREATE CURSOR zzyxkh(序号 I AUTOINC,单号 C(20),名称 C(20),电话 C(20),手机 C(20),微信 C(20))
FOR ii=1 TO 20
   INSERT INTO zzyxkh(单号,名称,电话,手机,微信) VALUES ("D"+PADL(ii,5,"0"),"客户"+PADL(ii,5,"0"),"0755-2888"+PADL(ii,4,"0"),"1388888"+PADL(ii,4,"0"),"WX1388888"+PADL(ii,4,"0"))
ENDFOR
*BROWSE

*!* 开始测试1
LOCAL n序号,c单号,c名称,c电话,c手机,c微信
n序号 = 1
c单号 = "D00002" && 本来是D00001,修改D00002后,测试是否通过
c名称 = "客户00001"
c电话 = "0755-28880001"
c手机 = "13888880001"
c微信 = "WX13888880001"

SELECT zzyxkh
GO TOP
LOCATE FOR 序号 # n序号 AND (ALLTRIM(单号)=c单号 OR ALLTRIM(名称)=c名称 OR ALLTRIM(电话)=c电话 OR ALLTRIM(手机)=c手机)
IF FOUND()
  ?"序号 = " + TRANSFORM(n序号) + " ,与序号 = ",序号,序号,单号,名称,电话,手机,微信,"重复"
ENDIF

* 此时,应该显示 D00002 这个行数据,因为 序号=1时,本来单号=D00001的,但上面修改为D00002,所以重复

*!* 开始测试2
LOCAL n序号,c单号,c名称,c电话,c手机,c微信
n序号 = 2
c单号 = "D00002"
c名称 = "客户00003" && 本来是客户00002,修改客户00003后,测试是否通过
c电话 = "0755-28880002"
c手机 = "13888880002"
c微信 = "WX13888880002"

SELECT zzyxkh
GO TOP
LOCATE FOR 序号 # n序号 AND (ALLTRIM(单号)=c单号 OR ALLTRIM(名称)=c名称 OR ALLTRIM(电话)=c电话 OR ALLTRIM(手机)=c手机)
IF FOUND()
  ?"序号 = " + TRANSFORM(n序号) + " ,与序号 = ",序号,序号,单号,名称,电话,手机,微信,"重复"
ENDIF

* 此时,应该显示 D00003 这个行数据,因为 序号=2时,本来名称=客户D00002的,但上面修改为客户D00003,所以重复
* 同样,只要你“单号,名称,电话,手机,微信”有1个相同,就能找出来
2020-04-26 12:55
mywisdom88
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:191
帖 子:3147
专家分:8408
注 册:2015-3-25
收藏
得分:0 
*!* 建立测试数据
*!* 序号,单号,名称,电话,手机,微信
CLEAR
CREATE CURSOR zzyxkh(序号 I AUTOINC,单号 C(20),名称 C(20),电话 C(20),手机 C(20),微信 C(20))
FOR ii=1 TO 20
   INSERT INTO zzyxkh(单号,名称,电话,手机,微信) VALUES ("D"+PADL(ii,5,"0"),"客户"+PADL(ii,5,"0"),"0755-2888"+PADL(ii,4,"0"),"1388888"+PADL(ii,4,"0"),"WX1388888"+PADL(ii,4,"0"))
ENDFOR
*!* VFP 9.0的,如果是6.0改为
CLEAR
CREATE CURSOR zzyxkh(序号 I ,单号 C(20),名称 C(20),电话 C(20),手机 C(20),微信 C(20))
FOR ii=1 TO 20
   INSERT INTO zzyxkh(序号,单号,名称,电话,手机,微信) VALUES (ii,"D"+PADL(ii,5,"0"),"客户"+PADL(ii,5,"0"),"0755-2888"+PADL(ii,4,"0"),"1388888"+PADL(ii,4,"0"),"WX1388888"+PADL(ii,4,"0"))
ENDFOR
2020-04-26 12:58
永顺彭英宏
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2020-4-12
收藏
得分:0 
找到原因了,主要是因为:如电话或微信没输入为空就提示重复。因为有时确认没有客户这些资料,能有办法吗?
2020-04-26 20:21
mywisdom88
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:191
帖 子:3147
专家分:8408
注 册:2015-3-25
收藏
得分:0 
程序代码:
* 用这样的格式
c电话 = allt(thisform.text6.Value)
c微信 = allt(thisform.text7.Value)
or iif(empty(电话) or empty(c电话),.f.,allt(电话)=c电话) or iif(empty(微信) or empty(c微信),.f.,allt(微信)=c微信)
2020-04-26 21:34
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:335
帖 子:9848
专家分:27241
注 册:2012-2-5
收藏
得分:10 
字符串比较时,一定要用精确匹配,这样就不会出现问题了
alltrim(aa) == "123"

坚守VFP最后的阵地
2020-04-27 12:50
永顺彭英宏
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2020-4-12
收藏
得分:0 
可能理解错我的意思了,我都有 allt(电话)=allt(thisform.text7.Value);意思是原来有电话为空的记录,现在修改的客户也是为空,修改保存就提示重复。但又不能规定一定要输入。这样有怎么办好。也就是为空就不要管他。
2020-04-27 14:23
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:335
帖 子:9848
专家分:27241
注 册:2012-2-5
收藏
得分:0 
将记录保存在指定位置,就不会出现问题
REPLACE 命令

坚守VFP最后的阵地
2020-04-27 14:31
快速回复:关于修改保存时检查重复记
数据加载中...
 
   



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

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