做了一个表单 有两个表 把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表为准,用不着提示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