&&SELCUTCODE 是全局变量,记录当前剪裁的裁床编号
SELECT SIZES,CUTRATIO FROM CUTSIZES WHERE CUTCODE=SELCUTCODE INTO CURSOR CUTRATION
COUNT TO REC &&取出要剪裁的尺码及尺码比例
SELECT SUM(CUTRATIO) FROM CUTSIZES WHERE CUTCODE=SELCUTCODE INTO ARRAY SUMRATIO &&尺码比例合计
IF SUMRATIO>0
DIMENSION RATIO(SUMRATIO) &&将尺码按顺序及数量转入到一个数组
SELECT CUTRATION
GO TOP
HEAPQTY=0
FOR SIZESQTY=1 TO REC
FOR RATIOQTY=1 TO CUTRATION.CUTRATIO
HEAPQTY=HEAPQTY+1
RATIO(HEAPQTY)=CUTRATION.SIZES
ENDFOR
RATIOQTY=1
SELECT CUTRATION
SKIP
ENDFOR
SELECT TABING
COUNT TO REC &&取飞仔的流水号存入变量MAXTABCODE
IF REC>0
SELECT MAX(TABCODE) FROM TABING INTO ARRAY MAXTABING
MAXTABCODE=MAXTABING
RELEASE MAXTABING &&释放SQL语句取出的数据
ELSE
MAXTABCODE="0"
ENDIF
SELECT CUTCODE,ORDERCODE,SHORTNAME,FABRICQTY FROM CUTELEMENT WHERE CUTCODE=SELCUTCODE INTO CURSOR CUTELEMENTN
COUNT TO REC &&取出要剪裁的布料数据
IF REC>0
MAXBED=THISFORM.PAGEFRAME1.PAGE1.TEXT4.VALUE &&得到床次数据
FOR SIZESQTY=1 TO SUMRATIO &&将存入数组的尺码资料循环存入飞仔表
SELECT CUTELEMENTN &&取布料数据
GO TOP
FOR FABRICQTY=1 TO REC &&将出入SQL结果中的布料数据循环存入飞仔表
MAXTABCODE=CHRTRAN(STR(VAL(MAXTABCODE)+1,8)," ","0")
&&下一行是将所有要求的数据转入飞仔表,每次大约2000条记录
INSERT INTO TABING(CUTCODE,TABCODE,ORDERCODE,CUTBED,SIZES,COLORS,QTY) VALUES(CUTELEMENTN.CUTCODE,MAXTABCODE,CUTELEMENTN.ORDERCODE,MAXBED,RATIO(SIZESQTY),CUTELEMENTN.SHORTNAME,CUTELEMENTN.FABRICQTY)
SELECT CUTELEMENTN
SKIP
ENDFOR
ENDFOR
SELECT TABING
TABLEUPDATE(.T.) &&保存结果
ENDIF
ELSE
ENDIF
SUMSERIAL=ORDERING.SERIALNUM &&取出工序数量
SELECT * FROM TABING WHERE CUTCODE=SELCUTCODE INTO CURSOR TABINGN
SELECT TABINGN
COUNT TO REC
GO TOP
FOR CUTQTY=1 TO REC
FOR SERIAL=1 TO SUMSERIAL
SELECT SUMWORK
&&下行省略了具体数据,只说明意思
INSERT INTO SUMWORK(...) VALUES(...)
ENDFOR
SERIAL=1
SELECT TABINGN
SKIP
ENDFOR
看清楚,我不仅仅是要求查询,最关键的是要求在很短的时间内(1分钟)增加25000条记录!
各位可以试一下,建立一个8个字段的表(数据库随便),建立一个循环,不停的增加,看增加25000条记录要多长时间!至于记录多不是主要问题,查询也可以很简单!例如我说的那个飞仔记录表,我要的查询仅仅是:
SELECT 姓名,SUM(飞仔工资) FROM 飞仔表 GROUP BY 姓名 WHERE 日期>XX AND 日期<XXX
其中飞仔表一个月大约120万条记录,员工数大约1500名,各位可以试一下!