https://vivaclipper.wordpress.com/tag/set-deleted/https://harbour.github.io/ng/c53g01c/nge3d1f.htmlhttp://www.fabriciobreve.com/trabalhos/clipper.pdfREQUEST DBFCDX
FUNCTION MAIN()
LOCAL nWRK1,nWRK2,cDBF1,cDBF2,cDBFDIR,cFILE1,cFILE2
LOCAL nRECCOUNT
RddSetDefault("DBFCDX")
CLS
?
? "Testing the APPEND FROM ... Command"
? " with SET DELETED ON and OFF. "
?
nWRK1 := 1
nWRK2 := 2
cDBFDIR := "\WHO\DBF\" // WHEREEVER YOU WISH THE DBF'S TO BE PLACED
cDBF1 := "CRAP1"
cDBF2 := "CRAP2"
cFILE1 := cDBFDIR + cDBF1 + ".DBF"
cFILE2 := cDBFDIR + cDBF2 + ".DBF"
FERASE(cFILE1) // ERASE TEMPORARY DATABASE
FERASE(cFILE2) // ditto
IF FILE(cFILE1) .OR. FILE(cFILE2)
ALERT("Error in Deleting Temporary DBFs. Quit Now.")
RETURN NIL
ENDIF
// DEFINE DBF STRUCTURE IN AN ARRAY
aDBFARY := ;
{ ;
{"SURNAME","C",16,0}, ;
{"FNAME","C",12,0} ;
}
DBCreate(cFILE1,aDBFARY,"DBFCDX",.F.)
DBCREATE(cFILE2,aDBFARY,"DBFCDX",.F.)
IF .NOT. (FILE(cFILE1) .AND. FILE(cFILE2))
ALERT("Error in Creating empty Temporary DBFs. Quit Now.")
CLOSE DATABASES
CLEANUP(cFILE1,cFILE2)
RETURN NIL
ENDIF
SELECT (nWRK1)
USE (cFILE1) ALIAS FILE1 EXCLUSIVE
IF NETERR()
ALERT("Filed to Open File1 Exclusively. Quit Now.")
CLOSE DATABASES
CLEANUP(cFILE1,cFILE2)
ENDIF
SELECT (nWRK2)
USE (cFILE2) ALIAS FILE2 EXCLUSIVE
IF NETERR()
ALERT("Filed to Open File2 Exclusively. Quit Now.")
CLOSE DATABASES
CLEANUP(cFILE1,cFILE2)
RETURN NIL
ENDIF
SELECT FILE1
APPEND BLANK
REPLACE SURNAME WITH "Giordano", FNAME WITH "ENRICO"
APPEND BLANK
REPLACE SURNAME WITH "SMITH", FNAME WITH "MEL"
IF RECCOUNT() <> 2
ALERT("Error. faulty Record Count = "+STR(RECCOUNT(),2,0))
CLOSE DATABASES
CLEANUP(cFILE1,cFILE2)
RETURN NIL
ENDIF
SET DELETED ON
// NOW MOVE TO AND DELETE THE 'Giordano' Record
GOTO 1
DELETE // (ITS O.K., ITS OPENED EXCLUSIVELY)
// NOW CONFIRM ONLY ONE ACTIVE UNDELETED RECORD IN THIS FILE
COUNT TO nRECCOUNT
IF nRECCOUNT == 2 // FAILURE: BOTH RECORDS WERE COUNTED
ALERT("After Deletion, Primary File: "+cFILE1+" still shows TWO
Records.")
CLOSE DATABASES
CLEANUP(Cfile1, Cfile2)
RETURN NIL
ENDIF
SELECT FILE1
USE // CLOSE IT UP FOR USE BELOW -- WITH 1 DELETED RECORD
SET DELETED OFF
SELECT (nWRK2)
USE (cFILE2) ALIAS FILE2 EXCLUSIVE
APPEND FROM (cFILE1) // which was closed above
GOTO TOP
COUNT TO nRECCOUNT FOR DELETED()
?
? "Number of Deleted Records with SET DELETED OFF =" + STR(nRECCOUNT,2,0)
?
? " Answer should be 1"
?
?
// NOW SET DELETED ON AND TRY IT.
GOTO TOP
ZAP
SET DELETED ON
APPEND FROM (cFILE1) // which was closed above
GOTO TOP
COUNT TO nRECCOUNT FOR DELETED()
?
? "Number of Deleted Records with SET DELETED ON =" + STR(nRECCOUNT,2,0)
?
? " Answer should be 0"
?
?
?
? "Press any key : "
??
INKEY(0)
?
CLOSE DATABASES
// AND LEAVE THEM FOR EXAMINATION
RETURN NIL
FUNCTION CLEANUP(cF1,cF2)
FERASE(cF1)
FERASE(cF2)
RETURN NIL
abs