* Makefile
* config/*
* contrib/*
* doc/*
* extras/*
* include/*
* lib/*
* package/*
* src/*
* tests/*
* utils/*
* removed empty lines left after removed '$' + 'Id' + '$' identifiers
384 lines
11 KiB
Plaintext
384 lines
11 KiB
Plaintext
#ifndef __HARBOUR__
|
|
#include "clipper.ch"
|
|
#endif
|
|
|
|
REQUEST _DBF
|
|
|
|
PROCEDURE Main()
|
|
|
|
LOCAL nI, aArray
|
|
|
|
Set( _SET_DATEFORMAT, "yyyy-mm-dd" )
|
|
|
|
rddSetDefault( "DBF" )
|
|
|
|
SET EXCLUSIVE OFF
|
|
CLS
|
|
|
|
dbUseArea( .T., "DBF", "test", "TESTDBF", .T., .F. )
|
|
? "RecCount:", TESTDBF->( RecCount() )
|
|
? "Used:", TESTDBF->( Used() )
|
|
? "Select:", TESTDBF->( Select() )
|
|
? "RecSize:", TESTDBF->( RecSize() )
|
|
? "RecNo:", TESTDBF->( RecNo() )
|
|
? "NetErr:", TESTDBF->( NetErr() )
|
|
|
|
? "Press any key to continue..."
|
|
Inkey( 0 )
|
|
CLS
|
|
|
|
aArray := rddList( 0 )
|
|
? "Rdd's: "
|
|
FOR nI := 1 TO Len( aArray )
|
|
?? aArray[ nI ], ""
|
|
NEXT
|
|
? "RddName:", TESTDBF->( rddName() )
|
|
? "lUpdate:", TESTDBF->( LUpdate() )
|
|
? "Header:", TESTDBF->( Header() )
|
|
? "FieldPos( 'LAST' ):", TESTDBF->( FieldPos( "LAST" ) )
|
|
? "FieldName( 2 ):", TESTDBF->( FieldName( 2 ) )
|
|
? "Dbf():", TESTDBF->( Dbf() )
|
|
? "Alias( 1 ):", Alias( 1 )
|
|
? "dbTableExt():", TESTDBF->( dbTableExt() )
|
|
aArray := TESTDBF->( dbStruct() )
|
|
? "dbStruct:"
|
|
FOR nI := 1 TO Len( aArray )
|
|
? PadR( aArray[ nI ][ 1 ], 10 ), aArray[ nI ][ 2 ], aArray[ nI ][ 3 ], aArray[ nI ][ 4 ]
|
|
NEXT
|
|
|
|
? "Press any key to continue..."
|
|
Inkey( 0 )
|
|
CLS
|
|
|
|
? "dbGoTop():"
|
|
dbGoTop()
|
|
? "Bof Eof Found Deleted RecNo:", TESTDBF->( Bof() ), TESTDBF->( Eof() ), ;
|
|
TESTDBF->( Found() ), TESTDBF->( Deleted() ), TESTDBF->( Deleted() ), ;
|
|
TESTDBF->( RecNo() )
|
|
? "dbSkip( -1 ):"
|
|
dbSkip( -1 )
|
|
? "Bof Eof Found Deleted RecNo:", TESTDBF->( Bof() ), TESTDBF->( Eof() ), ;
|
|
TESTDBF->( Found() ), TESTDBF->( Deleted() ), TESTDBF->( Deleted() ), ;
|
|
TESTDBF->( RecNo() )
|
|
? "dbSkip( -1 ):"
|
|
dbSkip( -1 )
|
|
? "Bof Eof Found Deleted RecNo:", TESTDBF->( Bof() ), TESTDBF->( Eof() ), ;
|
|
TESTDBF->( Found() ), TESTDBF->( Deleted() ), TESTDBF->( Deleted() ), ;
|
|
TESTDBF->( RecNo() )
|
|
? "dbSkip( 1 ):"
|
|
dbSkip( 1 )
|
|
? "Bof Eof Found Deleted RecNo:", TESTDBF->( Bof() ), TESTDBF->( Eof() ), ;
|
|
TESTDBF->( Found() ), TESTDBF->( Deleted() ), TESTDBF->( Deleted() ), ;
|
|
TESTDBF->( RecNo() )
|
|
? "dbSkip( 1 ):"
|
|
dbSkip( 1 )
|
|
? "Bof Eof Found Deleted RecNo:", TESTDBF->( Bof() ), TESTDBF->( Eof() ), ;
|
|
TESTDBF->( Found() ), TESTDBF->( Deleted() ), TESTDBF->( Deleted() ), ;
|
|
TESTDBF->( RecNo() )
|
|
? "dbGoTop():"
|
|
dbGoTop()
|
|
? "Bof Eof Found Deleted RecNo:", TESTDBF->( Bof() ), TESTDBF->( Eof() ), ;
|
|
TESTDBF->( Found() ), TESTDBF->( Deleted() ), TESTDBF->( Deleted() ), ;
|
|
TESTDBF->( RecNo() )
|
|
? "dbSkip( 1 ):"
|
|
dbSkip( 1 )
|
|
? "Bof Eof Found Deleted RecNo:", TESTDBF->( Bof() ), TESTDBF->( Eof() ), ;
|
|
TESTDBF->( Found() ), TESTDBF->( Deleted() ), TESTDBF->( Deleted() ), ;
|
|
TESTDBF->( RecNo() )
|
|
? "dbSkip( 1 ):"
|
|
dbSkip( 1 )
|
|
? "Bof Eof Found Deleted RecNo:", TESTDBF->( Bof() ), TESTDBF->( Eof() ), ;
|
|
TESTDBF->( Found() ), TESTDBF->( Deleted() ), TESTDBF->( Deleted() ), ;
|
|
TESTDBF->( RecNo() )
|
|
? "dbSkip( -1 ):"
|
|
dbSkip( -1 )
|
|
? "Bof Eof Found Deleted RecNo:", TESTDBF->( Bof() ), TESTDBF->( Eof() ), ;
|
|
TESTDBF->( Found() ), TESTDBF->( Deleted() ), TESTDBF->( Deleted() ), ;
|
|
TESTDBF->( RecNo() )
|
|
? "dbSkip( -1 ):"
|
|
dbSkip( -1 )
|
|
? "Bof Eof Found Deleted RecNo:", TESTDBF->( Bof() ), TESTDBF->( Eof() ), ;
|
|
TESTDBF->( Found() ), TESTDBF->( Deleted() ), TESTDBF->( Deleted() ), ;
|
|
TESTDBF->( RecNo() )
|
|
Inkey( 0 )
|
|
CLS
|
|
|
|
? "dbGoBottom():"
|
|
dbGoBottom()
|
|
? "Bof Eof Found Deleted RecNo:", TESTDBF->( Bof() ), TESTDBF->( Eof() ), ;
|
|
TESTDBF->( Found() ), TESTDBF->( Deleted() ), TESTDBF->( Deleted() ), ;
|
|
TESTDBF->( RecNo() )
|
|
? "dbSkip( 1 ):"
|
|
dbSkip( 1 )
|
|
? "Bof Eof Found Deleted RecNo:", TESTDBF->( Bof() ), TESTDBF->( Eof() ), ;
|
|
TESTDBF->( Found() ), TESTDBF->( Deleted() ), TESTDBF->( Deleted() ), ;
|
|
TESTDBF->( RecNo() )
|
|
? "dbSkip( 1 ):"
|
|
dbSkip( 1 )
|
|
? "Bof Eof Found Deleted RecNo:", TESTDBF->( Bof() ), TESTDBF->( Eof() ), ;
|
|
TESTDBF->( Found() ), TESTDBF->( Deleted() ), TESTDBF->( Deleted() ), ;
|
|
TESTDBF->( RecNo() )
|
|
? "dbSkip( -1 ):"
|
|
dbSkip( -1 )
|
|
? "Bof Eof Found Deleted RecNo:", TESTDBF->( Bof() ), TESTDBF->( Eof() ), ;
|
|
TESTDBF->( Found() ), TESTDBF->( Deleted() ), TESTDBF->( Deleted() ), ;
|
|
TESTDBF->( RecNo() )
|
|
? "dbSkip( -1 ):"
|
|
dbSkip( -1 )
|
|
? "Bof Eof Found Deleted RecNo:", TESTDBF->( Bof() ), TESTDBF->( Eof() ), ;
|
|
TESTDBF->( Found() ), TESTDBF->( Deleted() ), TESTDBF->( Deleted() ), ;
|
|
TESTDBF->( RecNo() )
|
|
|
|
? "Press any key to continue..."
|
|
Inkey( 0 )
|
|
CLS
|
|
|
|
? "dbGoto( 490 ):"
|
|
dbGoto( 490 )
|
|
? "Bof Eof Found Deleted RecNo:", TESTDBF->( Bof() ), TESTDBF->( Eof() ), ;
|
|
TESTDBF->( Found() ), TESTDBF->( Deleted() ), TESTDBF->( Deleted() ), ;
|
|
TESTDBF->( RecNo() )
|
|
? "FCount:", TESTDBF->( FCount() )
|
|
FOR nI := 1 TO TESTDBF->( FCount() )
|
|
? "FieldGet( " + hb_ntos( nI ) + " ):", TESTDBF->( FieldGet( nI ) )
|
|
NEXT
|
|
|
|
? "Press any key to continue..."
|
|
Inkey( 0 )
|
|
CLS
|
|
|
|
? "WHILE ! TESTDBF->( Eof() )"
|
|
? " ? TESTDBF->FIRST, TESTDBF->( RecNo() )"
|
|
? " TESTDBF->( dbSkip() )"
|
|
? "ENDDO"
|
|
? ""
|
|
WHILE ! TESTDBF->( Eof() )
|
|
? TESTDBF->FIRST, TESTDBF->( RecNo() )
|
|
TESTDBF->( dbSkip() )
|
|
ENDDO
|
|
|
|
? "Press any key to continue..."
|
|
Inkey( 0 )
|
|
CLS
|
|
|
|
? "SET FILTER TO TESTDBF->AGE == 21"
|
|
? "? TESTDBF->( dbFilter() )"
|
|
? "TESTDBF->( dbGoTop() )"
|
|
? "WHILE ! TESTDBF->( Eof() )"
|
|
? " ? TESTDBF->FIRST, TESTDBF->AGE, TESTDBF->( RecNo() )"
|
|
? " TESTDBF->( dbSkip() )"
|
|
? "ENDDO"
|
|
? "SET FILTER TO"
|
|
? ""
|
|
SET FILTER TO TESTDBF->AGE == 21
|
|
? TESTDBF->( dbFilter() )
|
|
TESTDBF->( dbGoTop() )
|
|
WHILE ! TESTDBF->( Eof() )
|
|
? TESTDBF->FIRST, TESTDBF->AGE, TESTDBF->( RecNo() )
|
|
TESTDBF->( dbSkip() )
|
|
ENDDO
|
|
SET FILTER TO
|
|
|
|
? "Press any key to continue..."
|
|
Inkey( 0 )
|
|
CLS
|
|
|
|
? "TESTDBF->( Found() )"
|
|
? "LOCATE FOR TESTDBF->AGE == 23"
|
|
? "WHILE TESTDBF->( Found() )"
|
|
? " ? TESTDBF->FIRST, TESTDBF->AGE, TESTDBF->( RecNo() )"
|
|
? " CONTINUE"
|
|
? "ENDDO"
|
|
TESTDBF->( Found() )
|
|
LOCATE FOR TESTDBF->AGE == 23
|
|
WHILE TESTDBF->( Found() )
|
|
? TESTDBF->FIRST, TESTDBF->AGE, TESTDBF->( RecNo() )
|
|
CONTINUE
|
|
ENDDO
|
|
|
|
? "Press any key to continue..."
|
|
Inkey( 0 )
|
|
CLS
|
|
|
|
? "TESTDBF->( dbEval( {|| QOut( TESTDBF->FIRST, TESTDBF->AGE ) }, ;"
|
|
? " {|| TESTDBF->AGE == 23 } ) )"
|
|
? ""
|
|
? "dbCommit()"
|
|
TESTDBF->( dbEval( {|| QOut( TESTDBF->FIRST, TESTDBF->AGE ) }, ;
|
|
{|| TESTDBF->AGE == 23 } ) )
|
|
TESTDBF->( dbCommit() )
|
|
|
|
? "Press any key to continue..."
|
|
Inkey( 0 )
|
|
CLS
|
|
|
|
? 'dbCreate( "newrdd", { ;'
|
|
? ' { "First_Name", "C", 20, 0 }, ;'
|
|
? ' { "Age", "N", 3, 0 }, ;'
|
|
? ' { "Date", "D", 8, 0 }, ;'
|
|
? ' { "Rate", "N", 6, 2 }, ;'
|
|
? ' { "Memo", "M", 10, 0 }, ;'
|
|
? ' { "Student", "L", 1, 0 } },, .T., "newrdd" )'
|
|
? 'SET CENTURY ON'
|
|
dbCreate( "newrdd", { ;
|
|
{ "First_Name", "C", 20, 0 }, ;
|
|
{ "Age", "N", 3, 0 }, ;
|
|
{ "Date", "D", 8, 0 }, ;
|
|
{ "Rate", "N", 6, 2 }, ;
|
|
{ "Memo", "M", 10, 0 }, ;
|
|
{ "Student", "L", 1, 0 } }, "DBFCDX", .T., "newrdd" )
|
|
SET CENTURY ON
|
|
? "lUpdate:", NEWRDD->( LUpdate() )
|
|
|
|
? "Press any key to continue..."
|
|
Inkey( 0 )
|
|
CLS
|
|
|
|
? 'Select( "TESTDBF" )'
|
|
? "SET FILTER TO TESTDBF->SALARY > 120000"
|
|
? "TESTDBF->( dbGoTop() )"
|
|
? "WHILE ! TESTDBF->( Eof() )"
|
|
? " NEWRDD->( dbAppend() )"
|
|
? " NEWRDD->FIRST_NAME := TESTDBF->FIRST"
|
|
? " NEWRDD->AGE := TESTDBF->AGE"
|
|
? " NEWRDD->DATE := TESTDBF->HIREDATE"
|
|
? " NEWRDD->RATE := Val( Right( hb_ntos( Seconds() ), 5 ) )"
|
|
? " NEWRDD->MEMO := TESTDBF->FIRST + Chr( 13 ) + Chr( 10 ) + ;"
|
|
? " TESTDBF->LAST + Chr( 13 ) + Chr( 10 ) + ;"
|
|
? " TESTDBF->STREET"
|
|
? " NEWRDD->STUDENT := TESTDBF->MARRIED"
|
|
? " TESTDBF->( dbSkip() )"
|
|
? "ENDDO"
|
|
? "SET FILTER TO"
|
|
? "? NEWRDD->( RecCount() )"
|
|
? "NEWRDD->( dbGoTop() )"
|
|
? "NEWRDD->( dbRLock( 1 ) )"
|
|
? "NEWRDD->( dbDelete() )"
|
|
? "? NEWRDD->( Deleted() )"
|
|
? "NEWRDD->( dbGoBottom() )"
|
|
? "NEWRDD->( dbRLock() )"
|
|
? "NEWRDD->( dbDelete() )"
|
|
? "? NEWRDD->( Deleted() )"
|
|
? "NEWRDD->( dbRLock( 3 ) )"
|
|
Select( "TESTDBF" )
|
|
SET FILTER TO TESTDBF->SALARY > 120000
|
|
TESTDBF->( dbGoTop() )
|
|
WHILE ! TESTDBF->( Eof() )
|
|
NEWRDD->( dbAppend() )
|
|
NEWRDD->FIRST_NAME := TESTDBF->FIRST
|
|
NEWRDD->AGE := TESTDBF->AGE
|
|
NEWRDD->DATE := TESTDBF->HIREDATE
|
|
NEWRDD->RATE := Val( Right( hb_ntos( Seconds() ), 5 ) )
|
|
NEWRDD->MEMO := TESTDBF->FIRST + Chr( 13 ) + Chr( 10 ) + ;
|
|
TESTDBF->LAST + Chr( 13 ) + Chr( 10 ) + ;
|
|
TESTDBF->STREET
|
|
NEWRDD->STUDENT := TESTDBF->MARRIED
|
|
TESTDBF->( dbSkip() )
|
|
ENDDO
|
|
SET FILTER TO
|
|
? NEWRDD->( RecCount() )
|
|
NEWRDD->( dbGoTop() )
|
|
NEWRDD->( dbRLock( 1 ) )
|
|
NEWRDD->( dbDelete() )
|
|
? NEWRDD->( Deleted() )
|
|
NEWRDD->( dbGoBottom() )
|
|
NEWRDD->( dbRLock() )
|
|
NEWRDD->( dbDelete() )
|
|
? NEWRDD->( Deleted() )
|
|
NEWRDD->( dbRLock( 3 ) )
|
|
|
|
? "Press any key to continue..."
|
|
Inkey( 0 )
|
|
CLS
|
|
|
|
aArray := NEWRDD->( dbRLockList() )
|
|
? "aArray := NEWRDD->( dbRLockList() )"
|
|
? "FOR nI := 1 TO Len( aArray )"
|
|
? " ? aArray[ nI ]"
|
|
? "NEXT"
|
|
? "dbRLockList(): "
|
|
FOR nI := 1 TO Len( aArray )
|
|
? aArray[ nI ]
|
|
NEXT
|
|
|
|
? "Press any key to continue..."
|
|
Inkey( 0 )
|
|
CLS
|
|
|
|
? 'NEWRDD->( dbCloseArea() )'
|
|
? 'dbUseArea( .T., "DBF", "newrdd", "NEWRDD", .F., .F. )'
|
|
? 'nI := 1'
|
|
? 'NEWRDD->( __dbPack( {|| QOut( nI ), nI++ } ) )'
|
|
? '? "RecCount:", NEWRDD->( RecCount() )'
|
|
? ""
|
|
NEWRDD->( dbCloseArea() )
|
|
dbUseArea( .T., "DBFCDX", "newrdd", "NEWRDD", .F., .F. )
|
|
|
|
? "Press any key to continue..."
|
|
Inkey( 0 )
|
|
CLS
|
|
|
|
nI := 1
|
|
NEWRDD->( __dbPack( {|| QOut( nI ), nI++ } ) )
|
|
? "RecCount:", NEWRDD->( RecCount() )
|
|
|
|
? "Press any key to continue..."
|
|
Inkey( 0 )
|
|
CLS
|
|
|
|
? '? "RecCount:", NEWRDD->( RecCount() )'
|
|
? 'NEWRDD->( __dbZap() )'
|
|
? '? "RecCount:", NEWRDD->( RecCount() )'
|
|
? ""
|
|
? "RecCount:", NEWRDD->( RecCount() )
|
|
NEWRDD->( __dbZap() )
|
|
? "RecCount:", NEWRDD->( RecCount() )
|
|
|
|
? "Press any key to continue..."
|
|
Inkey( 0 )
|
|
CLS
|
|
|
|
? 'NEWRDD->( dbCloseArea() )'
|
|
? 'SORT ON FIRST /DC, AGE /D TO NEWRDD'
|
|
? 'dbUseArea( .T., "DBF", "newrdd", "NEWRDD", .F., .F. )'
|
|
? '? "RecCount:", NEWRDD->( RecCount() )'
|
|
? 'FOR nI := 1 TO 8'
|
|
? ' ? NEWRDD->FIRST, NEWRDD->AGE'
|
|
? ' NEWRDD->( dbSkip() )'
|
|
? 'NEXT'
|
|
? '? "..."'
|
|
? 'NEWRDD->( dbGoBottom() )'
|
|
? 'NEWRDD->( dbSkip( -8 ) )'
|
|
? 'FOR nI := 1 TO 8'
|
|
? ' ? NEWRDD->FIRST, NEWRDD->AGE'
|
|
? ' NEWRDD->( dbSkip() )'
|
|
? 'NEXT'
|
|
|
|
? "Press any key to continue..."
|
|
Inkey( 0 )
|
|
CLS
|
|
|
|
NEWRDD->( dbCloseArea() )
|
|
Select( "TESTDBF" )
|
|
SORT ON FIRST /DC, AGE /D TO newrdd
|
|
|
|
dbUseArea( .T., "DBF", "newrdd", "NEWRDD", .F., .F. )
|
|
? "RecCount:", NEWRDD->( RecCount() )
|
|
FOR nI := 1 TO 8
|
|
? NEWRDD->FIRST, NEWRDD->AGE
|
|
NEWRDD->( dbSkip() )
|
|
NEXT
|
|
? "..."
|
|
NEWRDD->( dbGoBottom() )
|
|
NEWRDD->( dbSkip( -8 ) )
|
|
FOR nI := 1 TO 8
|
|
? NEWRDD->FIRST, NEWRDD->AGE
|
|
NEWRDD->( dbSkip() )
|
|
NEXT
|
|
|
|
dbCloseAll()
|
|
|
|
hb_dbDrop( "newrdd",, "DBFCDX" )
|
|
|
|
RETURN
|