Tek-Tips is the largest IT community on the Internet today!

Members share and learn making Tek-Tips Forums the best source of peer-reviewed technical information on the Internet!

  • Congratulations Mike Lewis on being selected by the Tek-Tips community for having the most helpful posts in the forums last week. Way to Go!

Record is out of range Error

Status
Not open for further replies.

bjd4jc

Programmer
Nov 8, 2001
1,627
0
0
US
I am getting a Record is out of Range error when I select a workspace. If I suspend the program and then resume everything runs normally. Does anyone have any ideas as to what I can do to get rid of this error???
 
Most of the time these errors are created by a bad index file. Try doing a DELEATE TAG ALL and re-create the indexes.

Rick
 
HI

IF SELECT alias gives you the problem...
you can do the following..
1. Pack the table
2. Reindex the table (when you pack reindexing is done)
3. If above did not solve, drop the index and recreate it.

If your code is creating the trouble..
If you have done a SET RELATION to a table, and the related table is not matching the relation crieteria and so an EOF() is reached, you could get that.
SET NEAR ON
this could help.

:)
ramani :-9
(Subramanian.G),FoxAcc, ramani_g@yahoo.com
 
I have tried to reindex all of the files but it is still not getting rid of the error. Is there any other possibilities?
 
HI
Is there any code some place, where you have
SKIP or SKIP -1

If you have such code, an dif you have not checked for
BOF() or EOF(), you could get into this error.

IF BOF()
LOCATE && same as GO TOP but faster
ENDIF

IF EOF()
GO BOTTOM
ENDIF

Hope this solves your problem :)
ramani :-9
(Subramanian.G),FoxAcc, ramani_g@yahoo.com
 
You are saying that just for selecting an area the error appears? On Ramani's point, I consider that you are going to an area, positioning in a record and, troughout a relation, sending to a record in another area that not exists in the index of this second area.

A piece of code related to the error would help.

David.
 
Here is the code for the program. I took out the top comments and I have made the line on which we get the error bold.

Thanks for any help you are able to provide!!

Brian Denning

SET CENTURY ON
* 11/10/1999 RJW END UPDATED CODE FOR Y2K
SET DELETED ON
SET SAFETY OFF
SET CONFIRM OFF
*
* ARRIVE AT PROMISE DOCK DATE
*
CLEAR
? "OPENING DATA FILES."
IF DOW(DATE()) < 3
STORE DATE() + (5 - DOW(DATE())) TO TPROM_DATE
ELSE
STORE DATE() + (5 - DOW(DATE()) + 7) TO TPROM_DATE
ENDIF DOW(DATE()) < 3
****************************************************************************

*
IF FILE(&quot;M:\MFGSYS\LOG.DMB&quot;) && LOG FILE FOUND.
HANDLE1 = FOPEN(&quot;M:\MFGSYS\LOG.DMB&quot;)
=FWRITE(HANDLE1, DTOS(DATE()) + TIME() + &quot;BEGIN SS-ORDERS PROGRAM.&quot;)
=FWRITE(HANDLE1, &quot;PLEASE CHECK RESTORE INSTRUCTIONS IN SSORDER.PRG.&quot;)
=FCLOSE(HANDLE1)
ELSE && ELSE CREATE A LOG FILE.
HANDLE1 = FCREATE(&quot;M:\MFGYS\LOG.DMB&quot;)
=FWRITE(HANDLE1, DTOS(DATE()) + TIME() + &quot;BEGIN SS-ORDERS PROGRAM.&quot;)
=FCLOSE(HANDLE1)
ENDIF
*
*** BACKUP DATA FILES
IF FILE(&quot;E:\DMB\SSUPDATE\OPENORD.DM&quot;)
DELETE FILE E:\DMB\SSUPDATE\OPENORD.DM
ENDIF
IF FILE(&quot;E:\DMB\OPENORD.DMB&quot;)
RENAME E:\DMB\OPENORD.DMB TO E:\DMB\SSUPDATE\OPENORD.DM
ENDIF
SET EXCLU OFF
USE E:\DMB\OPENORD.DBF
COPY TO E:\DMB\OPENORD.DMB
SET EXCLU ON
USE
*** OPEN DATA FILES
*
*
*
SET EXCLUSIVE ON
SELECT 15
USE E:\KNZDATA\F_SYSPEC.DBF
STORE SHOP_DAYS TO SHOPDAYS
*
STORE 0 TO LNCTR1, TMPPO
STORE .T. TO FIRST
? &quot;CREATING DMB S.S. ORDER.&quot;
DO SSTOCK
* UPDATE LOG
HANDLE1 = FOPEN(&quot;M:\MFGSYS\LOG\LOG.DMB&quot;)
=FWRITE(HANDLE1, DTOS(DATE()) + TIME() + &quot;SUCCESSFULLY COMPLETED S.S. ORDERS.&quot;)
=FCLOSE(HANDLE1)
*
STORE 0 TO LNCTR2
STORE .T. TO FIRST
SELECT 15
USE E:\KNZDATA\F_SYSPEC.DBF
*
SELECT A
USE E:\DMB\SSUPDATE\SHOPCAL.DBF
INDEX ON SHOP_DATE TO E:\DMB\SSUPDATE\SHOPCAL.IDX
SET INDEX TO E:\DMB\SSUPDATE\SHOPCAL.IDX
SEEK DATE()-1
IF .NOT. FOUND()
? &quot;SHOP CALANDER NOT VALID&quot;
RETURN
ELSE
SKIP + SHOPDAYS
IF EOF()
? &quot;SHOP CALANDER NOT VALID&quot;
RETURN
ELSE
STORE SHOP_DATE TO SDATE
ENDIF EOF()
ENDIF .NOT. FOUND()

*
**** CREATE A NEW FILE CONTAINING ONLY THE REQUIREMENTS FOR THIS DATE.
*
*
* 06/07/96 BY RJW - BEGIN
SELECT J
USE E:\Conpick\CONPTEST.DBF
INDEX ON MO_NUMBER TO E:\Conpick\CONPTEST.IDX
* 06/07/96 BY RJW - END
*
SELECT B
USE E:\DMB\SSUPDATE\DMBSDAL.DBF
set relation to order_no into j
COPY TO E:\DMB\SSUPDATE\TMPSDAL.DBF FOR (REQD_DATE >= DATE()-1 .AND. REQD_DATE <= SDATE .AND. ORDER_NO <> SPACE(15)) .OR. (!EOF('J') .AND. ORDER_NO <> SPACE(15))
*COPY TO E:\DMB\SSUPDATE\TMPSDAL.DBF FOR REQD_DATE > DATE() .AND. REQD_DATE <= SDATE .AND. ORDER_NO <> SPACE(15)
*COPY TO E:\DMB\SSUPDATE\TMPSDAL.DBF FOR REQD_DATE <= SDATE .AND. ORDER_NO <> SPACE(15)
*
USE E:\DMB\SSUPDATE\TMPSDAL.DBF
INDEX ON ITEM + DTOS(REQD_DATE) TO E:\DMB\SSUPDATE\TMPSDAL.IDX
SET INDEX TO E:\DMB\SSUPDATE\TMPSDAL.IDX
*
**** CREATE A NEW FILE CONTAINING ONLY THE ORDERS FOR THIS DATE.
*
SELECT C
USE E:\DMB\SSUPDATE\DMBSUP.DBF
SET RELATION TO ORDER_NO INTO J
*COPY TO E:\DMB\SSUPDATE\TMPSUP.DBF FOR SCHED_DATE >= DATE() .AND. SCHED_DATE <= SDATE
COPY TO E:\DMB\SSUPDATE\TMPSUP.DBF FOR (SCHED_DATE <= SDATE .AND. ORDER_QTY > QTY_RCVD) .OR. (!EOF('J'))
*
USE E:\DMB\SSUPDATE\TMPSUP.DBF
INDEX ON ALLTRIM(ITEM) + DTOS(SCHED_DATE) TO E:\DMB\SSUPDATE\TMPSUP.IDX
INDEX ON ORDER_NO+ALLTRIM(LN_NO) TO E:\DMB\SSUPDATE\TMPSUP2.IDX
INDEX ON ALLTRIM(ITEM) TO E:\DMB\SSUPDATE\TMPSUP3.IDX
SET INDEX TO E:\DMB\SSUPDATE\TMPSUP.IDX, E:\DMB\SSUPDATE\TMPSUP2.IDX, E:\DMB\SSUPDATE\TMPSUP3.IDX
*
SELECT F
USE E:\DMB\SSUPDATE\DMBORDER.DBF
*ZAP
*
SELECT G
USE E:\KNZDATA\MOCFG.DBF
INDEX ON ALLTRIM(MO_NUMBER) + ALLTRIM(COMP_WC) + ALLTRIM(PT_USE) + ALLTRIM(SEQN) TO E:\KNZDATA\MOCFG.IDX
SET INDEX TO E:\KNZDATA\MOCFG.IDX
*
SELECT H
SET EXCLU OFF
USE E:\DMB\OPENORD.DBF
INDEX ON ALLTRIM(MO_NUMBER) + ALLTRIM(ITEM) + ALLTRIM(PT_USE) + ALLTRIM(SEQN) TO E:\DMB\OPENORD1.IDX
INDEX ON ALLTRIM(ITEM) + DTOS(PO_DATE) TO E:\DMB\OPENORD2.IDX
INDEX ON PO_NUMBER TO E:\DMB\OPENORD3.IDX
SET INDEX TO E:\DMB\OPENORD1.IDX, E:\DMB\OPENORD2.IDX, E:\DMB\OPENORD3.IDX
SET EXCLU ON
* 06/07/96 BY RJW - BEGIN
*
SELECT I
USE E:\DMB\SSUPDATE\OPENCONP.DBF
INDEX ON ALLTRIM(MO_NUMBER) + ALLTRIM(ITEM) + ALLTRIM(PT_USE) + ALLTRIM(SEQN) TO E:\DMB\OPENCON1.IDX
INDEX ON ALLTRIM(ITEM) + DTOS(PO_DATE) TO E:\DMB\OPENCON2.IDX
INDEX ON PO_NUMBER TO E:\DMB\OPENCON3.IDX
SET INDEX TO E:\DMB\OPENCON1.IDX, E:\DMB\OPENCON2.IDX, E:\DMB\OPENCON3.IDX
*
SELECT J
USE E:\Conpick\CONPTEST.DBF
INDEX ON MO_NUMBER TO E:\Conpick\CONPTEST.IDX
****************************************************************************
*** BEGIN PROCESSING ORDERS/REQUIREMENTS
* FIRST, DELETE ALL PREVIOUSLY FILLED ORDERS AND REQUIREMENTS, SO WE DON'T
* HAVE TO DEAL WITH THEM AGAIN.
*
SELECT H
SET INDEX TO E:\DMB\OPENORD3.IDX, E:\DMB\OPENORD1.IDX, E:\DMB\OPENORD2.IDX
SELECT C
SET RELATION TO ORDER_NO INTO H
DELETE ALL FOR .NOT. EOF('H') .AND. ORDER_QTY = H->PO_QTY .AND. SCHED_DATE = H->REQD_DATE
SET RELATION TO
SELECT H
SET INDEX TO E:\DMB\OPENORD1.IDX, E:\DMB\OPENORD2.IDX, E:\DMB\OPENORD3.IDX
SELE B
SET RELATION TO ALLTRIM(ORDER_NO) + ALLTRIM(ITEM) + ALLTRIM(PT_USE) + ALLTRIM(SEQN) INTO H
DELETE ALL FOR .NOT. EOF('H')
SET RELATION TO
*
* 06/07/96 BY RJW - BEGIN
SELECT I
SET INDEX TO E:\DMB\OPENCON3.IDX, E:\DMB\OPENCON1.IDX, E:\DMB\OPENCON2.IDX
SELECT C
SET RELATION TO ORDER_NO INTO I
DELETE ALL FOR .NOT. EOF('I') .AND. ORDER_QTY = I->PO_QTY .AND. SCHED_DATE = I->REQD_DATE
SET RELATION TO
SELECT I
SET INDEX TO E:\DMB\OPENCON1.IDX, E:\DMB\OPENCON2.IDX, E:\DMB\OPENCON3.IDX
SELE B
SET RELATION TO ALLTRIM(ORDER_NO) + ALLTRIM(ITEM) + ALLTRIM(PT_USE) + ALLTRIM(SEQN) INTO I
DELETE ALL FOR .NOT. EOF('I')
SET RELATION TO
*
* NEXT, DEAL WITH ONLY UNFILLED REQUIREMENTS AND ORDERS.
*
*** SET RELATIONSHIPS
*
SELECT B
*
SET RELATION TO ALLTRIM(ORDER_NO) + ALLTRIM(ITEM) + ALLTRIM(PT_USE) + ALLTRIM(SEQN) INTO G
*
****************************************************************************
SELECT B
GO TOP
DO WHILE .NOT. EOF()
STORE ALLTRIM(ITEM) TO TMP_ITEM
STORE RECNO() TO ITEMREC
*
**** SUM TOTAL ITEM REQUIREMENTS FOR PRODUCTION
? &quot;CREATING DMB M.O. ORDER.&quot;
*
SUM REQD_QTY FOR ALLTRIM(ITEM) = ALLTRIM(TMP_ITEM) TO REQ
GO ITEMREC
SELECT D
*
*
*
**** PROCESS MANUFACTURING ORDER REQUIREMENTS
*
SELECT B
IF REQ > 0 && QTY_TO_ORD > 0 && IF THERE IS A NEED TO ORDER
*
**** SELECT REQUIREMENTS FOR THE CURRENT ITEM
**** SELECT ORDERS FOR THE CURRENT ITEM
*
SELECT C
SET FILTER TO ALLTRIM(ITEM) = ALLTRIM(TMP_ITEM)
SELECT B
*
**** LOOP THROUGH MANUFACTURING ORDER REQUIREMENTS
*
STORE 0 TO CNTR
STORE 0 TO FSORDQTY
STORE 0 TO ONORDQTY
STORE .F. TO SAFSTKFL
DO WHILE .NOT. EOF() .AND. ALLTRIM(ITEM) = ALLTRIM(TMP_ITEM)
*
SELECT H
SET INDEX TO E:\DMB\OPENORD1.IDX, E:\DMB\OPENORD2.IDX
GO TOP
SEEK ALLTRIM(B->ORDER_NO) + ALLTRIM(B->ITEM) + ALLTRIM(B->PT_USE) + ALLTRIM(B->SEQN)
IF FOUND() && MO IS ALREADY ORDERED, GO TO NEXT REQUIREMENT AND LOOP
SELECT B
SKIP +1
LOOP
ELSE
SELECT I
SET INDEX TO E:\DMB\OPENCON1.IDX, E:\DMB\OPENCON2.IDX
GO TOP
SEEK ALLTRIM(B->ORDER_NO) + ALLTRIM(B->ITEM) + ALLTRIM(B->PT_USE) + ALLTRIM(B->SEQN)
IF FOUND() && MO IS ALREADY ORDERED, GO TO NEXT REQUIREMENT AND LOOP
SELECT B
SKIP +1
LOOP
ENDIF
SELECT H
ENDIF FOUND()
*
SELECT J
IF SEEK(ALLTRIM(B->ORDER_NO))
DO CON_ORD IN E:\DMB\SSUPDATE\SSORDER4.PRG && CREATE CONPICK ORDER
ELSE
DO MAKE_ORD IN E:\DMB\SSUPDATE\SSORDER4.PRG && CREATE NORMAL ORDER
ENDIF
ENDDO WHILE .NOT. EOF() .AND. ALLTRIM(ITEM) = ALLTRIM(TMP_ITEM)
ELSE
SELECT B
SKIP +1
ENDIF QTY_TO_ORD > 0
SELECT B
ENDDO WHILE .NOT. EOF()
*
* SYNC UP THE NEXT PO NUMBERS
*
? &quot;FINISHED CREATING DMB M.O. ORDER.&quot;
*sele 15
SELECT 15 this is where the error occurs
USE E:\KNZDATA\F_SYSPEC.DBF
IF F_NEXTPO1 <> F_NEXTPO2
IF F_NEXTPO1 < F_NEXTPO2
REPLACE F_NEXTPO1 WITH F_NEXTPO2
ELSE
REPLACE F_NEXTPO2 WITH F_NEXTPO1
ENDIF F_NEXTPO1 < F_NEXTPO2
ENDIF F_NEXTPO1 <> F_NEXTPO2
*
* 06/07/96 BY RJW - BEGIN ADD UP INDIVIDUAL M.O.+ITEM QUANTITIES TO
* PLACE INTO ONE P.O. LINE ITEM.
*
SELECT I
INDEX ON CP_NAME + PT_USE + ITEM TO E:\DMB\OPENCON4.IDX FOR SENT <> .T.
GO TOP
DO WHILE !EOF()
STORE 0 TO TOTPOQTY
STORE {01/01/2050} TO LOWDT
STORE ALLTRIM(CP_NAME) + PT_USE + ALLTRIM(ITEM) TO TITEM
DO WHILE ALLTRIM(CP_NAME) + PT_USE + ALLTRIM(ITEM) = TITEM .AND. !EOF()
STORE TOTPOQTY + PO_QTY TO TOTPOQTY
IF REQD_DATE < LOWDT
STORE REQD_DATE TO LOWDT
ENDIF REQD_DATE < LOWDT
SKIP +1
ENDDO WHILE ALLTRIM(CP_NAME) + PT_USE + ALLTRIM(ITEM) = TITEM
SKIP -1
IF EOF() OR ITEM = SPACE(15)
EXIT
ENDIF
IF TOTPOQTY > 0
SELECT H
APPEND BLANK
IF RLOCK()
REPLACE PO_NUMBER WITH I->PO_NUMBER
REPLACE ITEM WITH I->ITEM
REPLACE REQD_QTY WITH TOTPOQTY
REPLACE REQD_DATE WITH LOWDT
REPLACE MO_NUMBER WITH I->CP_NAME + ALLTRIM(STR(MONTH(DATE()))) + ALLTRIM(STR(DAY(DATE())))
REPLACE MO_LN_NO WITH &quot;000&quot;
REPLACE LN_TYP WITH 'M'
REPLACE OPN_START WITH { / / }
REPLACE PARENT WITH I->CP_NAME
REPLACE PT_USE WITH I->PT_USE
REPLACE SEQN WITH &quot;999&quot;
REPLACE ISSUED_QTY WITH 0.0
REPLACE SHIPD_QTY WITH 0
REPLACE ISSUED_QTY WITH 0
REPLACE DMND_TYP WITH 'N'
REPLACE PO_QTY WITH TOTPOQTY
REPLACE PO_LN_NO WITH &quot;000&quot; && DOING ADD-UP PO_LN_NO IN REPORT.PRG
* && SO WE MATCH PO_LN_NO WITH MO_NUMBER+
* && MO_LN_NO.
REPLACE PO_DATE WITH DATE()
REPLACE PROM_DATE WITH I->PROM_DATE
ENDIF RLOCK()
UNLOCK
SELECT I
SKIP +1
ENDIF TOTPOQTY > 0
ENDDO WHILE !EOF
SELECT I
SET INDEX TO
REPLACE ALL SENT WITH .T.
*
* UPDATE LOG
HANDLE1 = FOPEN(&quot;M:\MFGSYS\LOG.DMB&quot;)
=FWRITE(HANDLE1, DTOS(DATE()) + TIME() + &quot;SUCCESSFULLY COMPLETED ALL M.O. ORDERS.&quot;)
=FCLOSE(HANDLE1)
*
CLOSE ALL
DELETE FILE E:\DMB\SSUPDATE\TMPSDAL.DBF
DELETE FILE E:\DMB\SSUPDATE\TMPSUP.DBF
RETURN
****************************************************************************
* PROCEDURE CLOSE FILLED ORDERS TO HISTORY
****************************************************************************
PROCEDURE CLOSEORD
SELECT A
USE E:\DMB\OPENORD.DBF
SELECT B
USE E:\DMB\SSUPDATE\DMBSUP.DBF
INDEX ON ORDER_NO TO E:\DMB\SSUPDATE\DMBSUP.IDX
SET INDEX TO E:\DMB\SSUPDATE\DMBSUP.IDX
SET FILTER TO ORDER_QTY > QTY_RCVD && ONLY NEED OPEN ORDERS.
SELECT C
USE E:\DMB\SSUPDATE\DMBHIS.DBF
SELECT A
SET RELATION TO PO_NUMBER INTO B
SET FILTER TO EOF('B')
GO TOP
DO WHILE .NOT. EOF()
SELECT C
APPEND BLANK
IF RLOCK()
REPLACE ITEM WITH A->ITEM
REPLACE REQD_QTY WITH A->REQD_QTY
REPLACE REQD_DATE WITH A->REQD_DATE
REPLACE MO_NUMBER WITH A->MO_NUMBER
REPLACE MO_LN_NO WITH A->MO_LN_NO
REPLACE LN_TYP WITH A->LN_TYP
REPLACE OPN_START WITH A->OPN_START
REPLACE PARENT WITH A->PARENT
REPLACE PT_USE WITH A->PT_USE
REPLACE SEQN WITH A->SEQN
REPLACE ISSUED_QTY WITH A->ISSUED_QTY
REPLACE DMND_TYP WITH A->DMND_TYP
REPLACE SHIPD_QTY WITH B->QTY_RCVD
REPLACE PO_NUMBER WITH A->PO_NUMBER
REPLACE PO_LN_NO WITH A->PO_LN_NO
REPLACE PO_QTY WITH A->PO_QTY
REPLACE PO_DATE WITH A->PO_DATE
REPLACE PROM_DATE WITH A->PROM_DATE
REPLACE CLOSE_DATE WITH DATE()
ENDIF RLOCK()
UNLOCK
SELECT A
IF RLOCK()
DELETE
ENDIF RLOCK()
UNLOCK
SKIP +1
ENDDO WHILE .NOT. EOF()
SELECT A
* PACK
CLOSE ALL
*
****************************************************************************
* PROCEDURE PROCESS ORDERS TO RESTORE SAFETY STOCK
****************************************************************************
PROCEDURE SSTOCK
SELECT A
USE E:\DMB\SSUPDATE\DMB.DBF
*
* 07/01/97 REVISION TO CHECK FOR PLNG DMB-ITEMS WITH SSITEMS
DO DMBCHECK
* 07/01/97 END REVISION TO CHECK FOR PLNG DMB-ITEMS WITH SSITEMS
*
*
SELECT B
USE E:\DMB\DMBMINI.DBF
INDEX ON ITEM TO E:\DMB\DMBMINI.IDX
SET INDEX TO E:\DMB\DMBMINI.IDX
*
SELECT C
USE E:\DMB\SAFESTK.DBF
INDEX ON ITEM TO E:\DMB\SAFESTK.IDX
SET INDEX TO E:\DMB\SAFESTK.IDX
*
SELECT D
SET EXCLU OFF
USE E:\DMB\OPENORD.DBF
INDEX ON ALLTRIM(ITEM) TO E:\DMB\DMBHIS.IDX
SET INDEX TO E:\DMB\DMBHIS.IDX
SET EXCLU ON
*
SELE E
USE E:\DMB\SSUPDATE\DMBSUP.DBF
INDEX ON ORDER_NO TO E:\DMB\SSUPDATE\DMBSUP.IDX
SET INDEX TO E:\DMB\SSUPDATE\DMBSUP.IDX
*
*
SELECT A
SET RELATION TO ITEM INTO C
GO TOP
*
**** PROCESS SAFETY STOCK REQUIREMENTS
*
DO WHILE .NOT. EOF()
STORE ALLTRIM(ITEM) TO TMP_ITEM
SELECT B
**** SUM THE AVAILABLE INVENTORY FOR EACH ITEM
SUM QTY_BY_LOC FOR ALLTRIM(ITEM) = ALLTRIM(TMP_ITEM) TO INV && .and. stk = '???'
**** DETERMINE TOTAL QUANTITY TO ORDER TO MEET SAFETY STOCK REQUIREMENTS
SELECT A
IF C->ORDPNT = 0
STORE C->SAFEST TO ORDERPOINT
ELSE
STORE C->ORDPNT TO ORDERPOINT
ENDIF C->ORDPNT = 0
*
IF INV < ORDERPOINT
SELECT E
GO TOP
STORE 0 TO ON_ORDER
**** SUM ALL PENDING SAFETY STOCK ORDERS FOR EACH ITEM
SUM ORDER_QTY-QTY_RCVD FOR ALLTRIM(ITEM) = ALLTRIM(TMP_ITEM) .AND. LEFT(ALLTRIM(ORDER_NO),5) = &quot;DMBSS&quot; TO ON_ORDER
IF INV + ON_ORDER < ORDERPOINT
IF FIRST
STORE .F. TO FIRST
SELECT 15
STORE F_NEXTPO1 TO TMPPO
REPLACE F_NEXTPO1 WITH TMPPO+1
SELECT E
ENDIF
DO ORDERSS WITH (C->SAFEST - (INV + ON_ORDER))
ENDIF INV + ON_ORDER < ORDERPOINT
ENDIF INV < C->ORDPNT
SELECT A
SKIP +1
ENDDO WHILE .NOT. EOF()
CLOSE ALL
*
****************************************************************************
* PROCEDURE GATHER INFORMATION TO ORDER SAFETY STOCK
****************************************************************************
PROCEDURE ORDERSS
PARAMETER ORDQTY
SELECT D
STORE LNCTR1 + 1 TO LNCTR1
APPEND BLANK
IF RLOCK()
REPLACE PO_NUMBER WITH &quot;DMBSS&quot;+RIGHT(&quot;00000&quot;+ ALLTRIM(STR(TMPPO)),6)
REPLACE ITEM WITH ALLTRIM(TMP_ITEM)
REPLACE REQD_QTY WITH ORDQTY
REPLACE REQD_DATE WITH DATE()
REPLACE MO_NUMBER WITH &quot;DMBKNZINV&quot;
REPLACE MO_LN_NO WITH &quot;000&quot;
REPLACE LN_TYP WITH 'S'
REPLACE PT_USE WITH &quot;00000&quot;
REPLACE SEQN WITH &quot;000&quot;
REPLACE ISSUED_QTY WITH 0
REPLACE DMND_TYP WITH 'N'
REPLACE SHIPD_QTY WITH 0
REPLACE PO_LN_NO WITH RIGHT(&quot;000&quot;+ALLTRIM(STR(LNCTR1)),3)
REPLACE PO_QTY WITH ORDQTY
REPLACE PO_DATE WITH DATE()
REPLACE PROM_DATE WITH TPROM_DATE + 6
ENDIF RLOCK()
UNLOCK
*
****************************************************************************
* PROCEDURE GATHER INFORMATION TO ORDER M.O. STOCK
****************************************************************************
PROCEDURE MAKE_ORD
IF FIRST
STORE .F. TO FIRST
SELECT 15
STORE F_NEXTPO2 TO TMPPO
REPLACE F_NEXTPO2 WITH TMPPO+1
ENDIF
SELECT H
APPEND BLANK
IF RLOCK()
REPLACE PO_NUMBER WITH &quot;DMB&quot;+RIGHT(&quot;0000000&quot; + ALLTRIM(STR(TMPPO)),8)
REPLACE ITEM WITH B->ITEM
REPLACE REQD_QTY WITH B->REQD_QTY
REPLACE REQD_DATE WITH B->REQD_DATE
REPLACE MO_NUMBER WITH B->ORDER_NO
REPLACE MO_LN_NO WITH G->LN_NO
REPLACE LN_TYP WITH B->LN_TYP
REPLACE OPN_START WITH B->OPN_START
REPLACE PARENT WITH B->PARENT
REPLACE PT_USE WITH B->PT_USE
REPLACE SEQN WITH B->SEQN
REPLACE ISSUED_QTY WITH B->ISSUED_QTY
REPLACE DMND_TYP WITH B->DMND_TYP
REPLACE SHIPD_QTY WITH 0
REPLACE ISSUED_QTY WITH 0
REPLACE DMND_TYP WITH 'N'
REPLACE PO_QTY WITH B->REQD_QTY - B->ISSUED_QTY
REPLACE PO_LN_NO WITH &quot;000&quot; && DOING ADD-UP PO_LN_NO IN REPORT.PRG
* && SO WE MATCH PO_LN_NO WITH MO_NUMBER+
* && MO_LN_NO.
REPLACE PO_DATE WITH DATE()
REPLACE PROM_DATE WITH TPROM_DATE + 6
ENDIF RLOCK()
UNLOCK
SELECT B
*
* 06/07/96 BY RJW - BEGIN
*
****************************************************************************
* PROCEDURE GATHER INFORMATION TO ORDER M.O. STOCK WITH A CONPICK
****************************************************************************
PROCEDURE CON_ORD
IF FIRST
STORE .F. TO FIRST
SELECT 15
STORE F_NEXTPO2 TO TMPPO
REPLACE F_NEXTPO2 WITH TMPPO+1
ENDIF
SELECT I
APPEND BLANK
IF RLOCK()
REPLACE PO_NUMBER WITH &quot;DMB&quot;+RIGHT(&quot;0000000&quot; + ALLTRIM(STR(TMPPO)),8)
REPLACE ITEM WITH B->ITEM
REPLACE REQD_QTY WITH B->REQD_QTY
REPLACE REQD_DATE WITH B->REQD_DATE
REPLACE MO_NUMBER WITH B->ORDER_NO
REPLACE MO_LN_NO WITH G->LN_NO
REPLACE LN_TYP WITH B->LN_TYP
REPLACE OPN_START WITH B->OPN_START
REPLACE PARENT WITH B->PARENT
REPLACE PT_USE WITH B->PT_USE
REPLACE SEQN WITH B->SEQN
REPLACE ISSUED_QTY WITH B->ISSUED_QTY
REPLACE DMND_TYP WITH B->DMND_TYP
REPLACE SHIPD_QTY WITH 0
REPLACE ISSUED_QTY WITH 0
REPLACE DMND_TYP WITH 'N'
REPLACE PO_QTY WITH B->REQD_QTY - B->ISSUED_QTY
REPLACE PO_LN_NO WITH &quot;000&quot; && DOING ADD-UP PO_LN_NO IN REPORT.PRG
* && SO WE MATCH PO_LN_NO WITH MO_NUMBER+
* && MO_LN_NO.
REPLACE PO_DATE WITH DATE()
REPLACE PROM_DATE WITH TPROM_DATE + 6
REPLACE SENT WITH .F.
REPLACE CP_NAME WITH J->CP_NAME
ENDIF RLOCK()
UNLOCK
SELECT B
*
****************************************************************************
* PROCEDURE QUANTITY CHECK, FOR CHANGED ORDER QUANTITIES
****************************************************************************
PROCEDURE QTY_CHK
SELECT C
SET INDEX TO E:\DMB\SSUPDATE\TMPSUP2.IDX, E:\DMB\SSUPDATE\TMPSUP.IDX
SEEK H->PO_NUMBER+ALLTRIM(H->PO_LN_NO)
IF FOUND() .AND. (ORDER_QTY <> H->PO_QTY .OR. DTOS(H->REQD_DATE) <> DTOS(B->REQD_DATE))
SELECT F
APPEND BLANK
IF RLOCK()
REPLACE PO_NUMBER WITH H->PO_NUMBER
REPLACE ITEM WITH H->ITEM
REPLACE REQD_QTY WITH H->REQD_QTY
REPLACE REQD_DATE WITH H->REQD_DATE
REPLACE MO_NUMBER WITH H->MO_NUMBER
REPLACE MO_LN_NO WITH H->MO_LN_NO
REPLACE LN_TYP WITH H->LN_TYP
REPLACE OPN_START WITH H->OPN_START
REPLACE PARENT WITH H->PARENT
REPLACE PT_USE WITH H->PT_USE
REPLACE SEQN WITH H->SEQN
REPLACE NEW_QTY WITH B->REQD_QTY
REPLACE DMND_TYP WITH H->DMND_TYP
REPLACE PO_LN_NO WITH H->PO_LN_NO
REPLACE PO_QTY WITH H->PO_QTY
REPLACE PO_DATE WITH H->PO_DATE
REPLACE RUN_DATE WITH DATE()
REPLACE PROM_DATE WITH TPROM_DATE
ENDIF RLOCK()
UNLOCK
SELECT C
ENDIF FOUND() .AND. ORDER_QTY <> H->REQD_QTY
*
*
****************************************************************************
* PROCEDURE BUYR/PLNR CODE = DMB CHECK, FOR CHANGED CODES
****************************************************************************
PROCEDURE DMBCHECK
* OPEN IN AREA A IS &quot;E:\DMB\SSUPDATE\DMB.DBF&quot;
*
select a
index on item to E:\DMB\SSUPDATE\DMBa.IDX
* 07/01/97 REVISION TO CHECK FOR PLNG DMB ITEM CHANGES
SELECT F
SET EXCLU OFF
USE E:\KNZDATA\PLNG.DBF
copy to E:\DMB\SSUPDATE\DMBb.DBF FOR PLNR = &quot;DMB&quot; .AND. BUYR = &quot;DMB&quot;
use E:\DMB\SSUPDATE\DMBb.DBF
*INDEX ON ITEM TO E:\DMB\SSUPDATE\DMBb.IDX
*set relation to item into a
*REPORT FORM DMBNEW TO PRINT FOR EOF('A')
*set relation to
SELECT A
*INDEX ON ITEM TO DMB_ITEM.IDX
*SET RELATION TO ITEM INTO F
*REPORT FORM DMBCHNG TO PRINT FOR EOF('F')
USE
SELECT F
COPY TO E:\DMB\DMBSS\DMB.DBF
USE
DELETE FILE E:\DMB\SSUPDATE\DMBb.DBF
SELECT A
USE E:\DMB\SSUPDATE\DMB.DBF
return
 
Instead
do while .not. eof()...many skip+1...enddo
use rather
scan...endscan.
May be your combination .not. eof() with other condition and forgotten skip create infinite loop...
Your version FoxPro ? (instead .IDX better .CDX...)
 
Other possibility error &quot;Record is out of range&quot; is
save recno, set filter to..., and go recno,
if condition by filter exclude this record.
To avoid error, try...
on error go top
go save_recno
on error.
If condition exclude (step by step) finally all records, help
set filter to
go save_recno
 
The version of foxpro is 2.6. You'll have to forgive me as I am new to foxpro. I am not sure exactly what all of the replies are doing. I was wondering if you could expand on the last two posts a little. I am only needing to learn enough of foxpro to fix some errors like this and to convert some programs. I do appreciate all of your help!!!

Thanks

Brian
 
Status
Not open for further replies.

Part and Inventory Search

Sponsor

Back
Top