| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1059 人关注过本帖
标题:还是那个老问题,没弄明白
只看楼主 加入收藏
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:335
帖 子:9828
专家分:27147
注 册:2012-2-5
收藏
得分:0 
测试表数据太少,测试结果不一定能保证正确。

坚守VFP最后的阵地
2012-12-15 16:20
shyibaoban
Rank: 1
等 级:新手上路
帖 子:125
专家分:2
注 册:2008-12-3
收藏
得分:0 
回复 10楼 月沐庭轩
老师好:你给的程序是不是前三种情况时,程序不再运行了?
2012-12-15 16:20
月沐庭轩
Rank: 9Rank: 9Rank: 9
来 自:京城
等 级:贵宾
威 望:17
帖 子:393
专家分:1106
注 册:2011-7-24
收藏
得分:0 
回复 12楼 shyibaoban
是呀,前三种情况,就不执行,只有后一种情况执行呀,所以是可以的。只要你另的代码对,上述代码应该能满足你的要求。

坚持学习vfp,QQ:306805680
2012-12-15 16:27
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:335
帖 子:9828
专家分:27147
注 册:2012-2-5
收藏
得分:5 
程序代码:
*1.判断RY表与RY_TEMP表中是否有相同记录
SELECT b.sfzh from ry a,ry_temp b WHERE b.sfzh==a.sfzh INTO CURSOR TEMP1
IF RECCOUNT([TEMP1])>0
   MESSAGEBOX([两表中有相同记录])
ENDIF

*2.判断临时表中是否有重复记录
SELECT sfzh FROM ry_temp WHERE sfzh IN (SELECT sfzh FROM ry_temp GROUP BY sfzh HAVING COUNT(*)>1) ORDER BY sfzh INTO CURSOR TEMP2
IF RECCOUNT([TEMP2])>0
   MESSAGEBOX([RY_TEMP表中有重复记录])
ENDIF


坚守VFP最后的阵地
2012-12-15 16:30
shyibaoban
Rank: 1
等 级:新手上路
帖 子:125
专家分:2
注 册:2008-12-3
收藏
得分:0 
回复 13楼 月沐庭轩
还有一个情况,就是我把错误的信息拷出来,两个表的表名是一个了,里边的错误信息只能是一个了吧
2012-12-15 16:34
shyibaoban
Rank: 1
等 级:新手上路
帖 子:125
专家分:2
注 册:2008-12-3
收藏
得分:0 
回复 14楼 sdta
谢谢你的回答,判断我会,只是不会把我说明中四种情况综合起来。
2012-12-15 16:35
shyibaoban
Rank: 1
等 级:新手上路
帖 子:125
专家分:2
注 册:2008-12-3
收藏
得分:0 
**1、判断人员表中是否有已导入人员***************************
**判断临时表ry_temp中身份证在人员表中ry是否已存在
SELECT * from ry_temp where !EMPTY(bz) OR ry_temp.sfzh in(select sfzh FROM ry)  INTO CURSOR aaaa
SELECT aaaa
a=RECCOUNT()
dwmc=aaaa.dwmc
IF a!=0
   COPY TO &dwmc. FIELDS dwbh,dwmc,ryxm,sfzh,bz SDF  &&这个地方和下边的&dwmc.导出表同名
    MESSAGEBOX("身份证号有错误或数据重复,数据已导出!位置在:"+(Mymllj),0+48,"居民医保警告")
   
    RETURN **这个地方最好能不停止运行继续判断下面
ENDIF  
**2、判断临时表中是否有录入重复人员****
***判断临时表自身是否有重复录入人员,身份证是否重复
SELECT * from ry_temp where  ry_temp.sfzh in(select sfzh FROM ry_temp group by ry_temp.sfzh HAVING COUNT(ry_temp.sfzh)>1) INTO CURSOR ccc
SELECT ccc
b=RECCOUNT()
dwmc=ccc.dwmc
IF b!=0
   COPY TO &dwmc. FIELDS dwbh,dwmc,ryxm,sfzh SDF  &&如何让它加上别的符号?
    MESSAGEBOX("单位内部身份证号重复,数据已导出!位置在:"+(Mymllj),0+48,"居民医保警告")
   
  RETURN
ENDIF
***以上两条最好在一个判断中,最后说明中的情况
**3、以上如都果正确则可导入***********
MESSAGEBOX("数据可以导入!",1+48,"居民医保管理系统")
  

最好是满足以下
要的是四个判断:
1、判断**1有错误,则拷贝出,继续判断**2有错误,则拷贝出,提示:身份证号有错误或数据重复/单位内部身份证号重复,程序停止。
2、判断**1有错误,则拷贝出,继续判断**2无错误,提示:身份证号有错误或数据重复,程序停止。
3、判断**1无错误,继续判断**2有错误,则拷贝出,提示:单位内部身份证号重复,程序停止。
4、判断**1无错误,继续判断**2无错误,由运行**3
2012-12-15 16:38
shyibaoban
Rank: 1
等 级:新手上路
帖 子:125
专家分:2
注 册:2008-12-3
收藏
得分:0 
回复 13楼 月沐庭轩
程序测试可以使用,但是如果两次判断都有错误,导出的表名都是单位名称.dbf。如何把第一次判断为单位名称.dbf,第二次判断为单位名称2.dbf?
2012-12-15 16:41
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:335
帖 子:9828
专家分:27147
注 册:2012-2-5
收藏
得分:0 
以下是引用shyibaoban在2012-12-15 16:08:26的发言:

**1、判断人员表中是否有已导入人员***************************
**判断临时表ry_temp中身份证在人员表中ry是否已存在
SELECT * from ry_temp where !EMPTY(bz) OR ry_temp.sfzh in(select sfzh FROM ry)  INTO CURSOR aaaa
SELECT aaaa
a=RECCOUNT()
dwmc=aaaa.dwmc
IF a!=0
   COPY TO &dwmc. FIELDS dwbh,dwmc,ryxm,sfzh,bz SDF
    MESSAGEBOX("身份证号有错误或数据重复,数据已导出!位置在:"+(Mymllj),0+48,"居民医保警告")
   
    RETURN **这个地方最好能不停止运行继续判断下面
ENDIF  
**2、判断临时表中是否有录入重复人员****
***判断临时表自身是否有重复录入人员,身份证是否重复
SELECT * from ry_temp where  ry_temp.sfzh in(select sfzh FROM ry_temp group by ry_temp.sfzh HAVING COUNT(ry_temp.sfzh)>1) INTO CURSOR ccc
SELECT ccc
b=RECCOUNT()
dwmc=ccc.dwmc
IF b!=0
   COPY TO &dwmc. FIELDS dwbh,dwmc,ryxm,sfzh SDF
    MESSAGEBOX("单位内部身份证号重复,数据已导出!位置在:"+(Mymllj),0+48,"居民医保警告")
   
  RETURN
ENDIF
***以上两条最好在一个判断中,最后说明中的情况
**3、以上如都果正确则可导入***********
MESSAGEBOX("数据可以导入!",1+48,"居民医保管理系统")
  

最好是满足以下
要的是四个判断:
1、判断**1有错误,则拷贝出,继续判断**2有错误,则拷贝出,提示:身份证号有错误或数据重复/单位内部身份证号重复,程序停止。
2、判断**1有错误,则拷贝出,继续判断**2无错误,提示:身份证号有错误或数据重复,程序停止。
3、判断**1无错误,继续判断**2有错误,则拷贝出,提示:单位内部身份证号重复,程序停止。
4、判断**1无错误,继续判断**2无错误,由运行**3
上面的四个判断:有错误拷贝出什么,不明白。
1、在临时表导入人员表中前,先判断临时表中是否有重复记录,如果有,找出重复记录,修改。
2、如果临时表中与人员表中有相同记录,则找出相同记录并修改。
用IF ELSE ENDIF语句判断,并用信息框显示:MESSAGEBOX([....]),如果想让程序返回调用程序开始处,用RETURN MESSAGEBOX()即可。

坚守VFP最后的阵地
2012-12-15 16:44
shyibaoban
Rank: 1
等 级:新手上路
帖 子:125
专家分:2
注 册:2008-12-3
收藏
得分:0 
回复 19楼 sdta
dwmc=aaaa.dwmc 单位名称
IF a!=0
   COPY TO &dwmc. FIELDS dwbh,dwmc,ryxm,sfzh,bz SDF 单位名称为表名.dbf
2012-12-15 16:50
快速回复:还是那个老问题,没弄明白
数据加载中...
 
   



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

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