_DBSkip(В ) moves the record pointer in the specified work area the specified number of records.
long _DBSkip(int workarea, long distance) int workarea; /* Work area. */ long distance; /* Number of records to skip. */ |
Remarks
_DBSkip(В ) respects the active index and filter expressions, just like the Visual FoxPro SKIP command. The distance may be positive or negative. _DBSkip(В ) returns the record number of the new record.
Use _DBStatus(В ) to check for end of file and beginning of file conditions. If you try to skip forward from the end of the file, or skip backwards from the beginning of the file, _DBSkip(В ) returns a negative integer whose absolute value is a Visual FoxPro error number.
For more information on how to create an API library and integrate it with Visual FoxPro, see Accessing the Visual FoxPro API.
Example
The following example works like the Visual FoxPro SKIP command.
Visual FoxPro Code
В | Copy Code |
---|---|
SET LIBRARY TO DBSKIP ON ERROR DO expectError DO CreateTest USE = DBSKIP(1) && _Error() called: no DBF in use USE test GO TOP = DBSKIP(-1) = DBSKIP(-1) && _Error() called: at top of file GO BOTT = DBSKIP(1) = DBSKIP(1) && _Error() called: at bottom of file ON ERROR PROCEDURE expectError ? "ERROR: " + MESSAGE() RETURN PROCEDURE CreateTest CREATE TABLE test (ABC C(20)) APPEND BLANK REPLACE ABC WITH "This is record 1" APPEND BLANK REPLACE ABC WITH "This is record 2" APPEND BLANK REPLACE ABC WITH "This is record 3" APPEND BLANK REPLACE ABC WITH "This is record 4" GO TOP RETURN |
C Code
В | Copy Code |
---|---|
#include <pro_ext.h> FAR Example(ParamBlk FAR *pblk) { int RetCode; if ((RetCode = _DBSkip(-1, pblk->p[0].val.ev_long)) < 0) { _PutStr("\nError encountered in example program."); _Error(-RetCode); // _DBSkip() returns negative error code } _RetInt(RetCode, 10); } FoxInfo myFoxInfo[] = { {"DBSKIP", (FPFI) Example, 1, "I"}, }; FoxTable _FoxTable = { (FoxTable FAR *) 0, sizeof(myFoxInfo)/sizeof(FoxInfo), myFoxInfo }; |