当前位置: 代码迷 >> VFP >> 请各位大侠帮忙看看代码,该如何解决
  详细解决方案

请各位大侠帮忙看看代码,该如何解决

热度:4520   发布时间:2013-02-26 00:00:00.0
请各位大侠帮忙看看代码
本帖最后由 dkfdtf 于 2012-06-30 08:48:49 编辑
做了一个表单 有两个表 把a表中符合要求的记录插入到b表中
如果b表中已存在 提示重复
如果a表中没有   提示没有
调试过程中发现只有第一次有重复时提示 后面重复的就插入了
请教各位高手帮忙指出问题 

IF NOT USED('mpmb')
USE g:\mpmb.dbf
endif
SELECT 1
GO top
LOCATE FOR ALLTRIM(mpmb.th)==ALLTRIM(thisform.text1.value)
IF FOUND()
   MESSAGEbox('重复')
   SELECT 1
   USE   
ELSE
   IF not USED('jck')
   USE g:\jck.dbf
   endif
   SELECT 1
   GO TOP 
   LOCATE FOR ALLTRIM(jck.th)==ALLTRIM(thisform.text1.value)
   IF FOUND()
     insert INTO mpmb SELECT * FROM jck where jck.th==ALLTRIM(thisform.text1.value)
     SELECT 1
     USE
     SELECT 2
     USE
   ELSE
     MESSAGEbox('料号不在jck内')
     SELECT 1
     USE
   ENDIF
ENDIF
thisform.Release
mpmb.refresh

------解决方案--------------------------------------------------------
引用:
如果b表中已存在 提示重复
如果a表中没有 提示没有
以哪个表为准?
如果以B表为准,用不着提示B表重复,直接找 A表中有 而 B表中没有 的 A表记录 就可以了。
如果以A表为准,用不着提示A表没有,直接将 A表中有 而 B表中没有 的 A表记录 就可以了。

------解决方案--------------------------------------------------------
请参考:
表1有而表2没有记录
*-----------------
Create Cursor 表1 (Fl1 i,Fl2 i)
Create Cursor 表2 (Fl1 i,Fl2 i)
Insert Into 表1 Values (1,1)
Insert Into 表1 Values (2,1)
Insert Into 表2 Values (2,0)
Insert Into 表2 Values (3,0)

*-- 取出表1有而表2没有的表1记录
Select A.* From 表1 A Where Not Exists (Select Fl1 From 表2 B Where A.Fl1=B.Fl1)
*-- 或
Select A.* From 表1 A Left Join 表2 B On A.Fl1=B.Fl1 Where B.Fl1 Is Null

然后将出取的记录追加表目标表中即可。
------解决方案--------------------------------------------------------
4楼代码更正如下:
*---VFP6.0代码。
*---表单运行前,将数据表JCK.DBF及MPMB.DBF分别添加到表单的数据环境中
SELECT MPMB
LOCATE FOR ALLTRIM(MPMB.TH)==ALLTRIM(THISFORM.TEXT1.VALUE)
IF FOUND()
   MESSAGEbox("表MPMB.DBF中存在该记录")
   SELECT JCK
   GO TOP 
   LOCATE FOR ALLTRIM(JCK.TH)==ALLTRIM(THISFORM.TEXT1.VALUE)
   IF FOUND()
      MESSAGEBOX("表JCK.DBF中存在该记录")
   ELSE
      INSERT INTO JCK (TH) VALUES (THISFORM.TEXT1.VALUES)
   ENDIF
ELSE
   MESSAGEbox("表MPMB.DBF中不存在该记录")
ENDIF
THISFORM.REFRESH
  相关解决方案