diff options
Diffstat (limited to 'examples/sample3.cpp')
-rwxr-xr-x | examples/sample3.cpp | 137 |
1 files changed, 137 insertions, 0 deletions
diff --git a/examples/sample3.cpp b/examples/sample3.cpp new file mode 100755 index 0000000..137ee54 --- /dev/null +++ b/examples/sample3.cpp @@ -0,0 +1,137 @@ +/* sample3.cpp + + Xbase64 project source code + + This sample program reads the database created and updated by the sample1 + and sample2 program + + This program demonstrates the use of the following functions/methods + OpenDatabase, GetFieldNo, GetRecord, GetLastRecord, GetFirstRecord, + GetNextRecord, GetPrevRecord, NoOfRecords and CloseDatabase, FieldCount + + Copyright (C) 1997,2003 Gary A. Kunkel + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + + Contact: + + Email: + + xbase64-devel@lists.sourceforge.net + xbase64-users@lists.sourceforge.net + + + Regular Mail: + + XBase Support + 149C South Main St + Keller Texas, 76248 + USA + +*/ + +#include <xbase64/xbase64.h> + +int main() +{ + char buf[40]; + xbShort rc,i; + xbShort lname, fname, birthdate, amount, sw, f1, memo; + char *p; + xbFloat f; + + xbXBase x; + xbDbf MyFile( &x ); + MyFile.OpenDatabase( "MYFILE.DBF" ); + MyFile.AutoLockOff(); + + lname = MyFile.GetFieldNo( "LASTNAME" ); + fname = MyFile.GetFieldNo( "FIRSTNAME" ); + birthdate = MyFile.GetFieldNo( "BIRTHDATE" ); + amount = MyFile.GetFieldNo( "AMOUNT" ); + sw = MyFile.GetFieldNo( "SWITCH" ); + f1 = MyFile.GetFieldNo( "FLOAT1" ); + memo = MyFile.GetFieldNo( "MEMO1" ); + + std::cout << "There are " << MyFile.FieldCount() + << " fields in the file" << std::endl; + std::cout << "There are " << MyFile.NoOfRecords() + << " records in the file." << std::endl; + std::cout << "LASTNAME is type: " << MyFile.GetFieldType( lname ) + << " length: " << MyFile.GetFieldLen( lname ) + << std::endl; + std::cout << "FIRSTNAME is type: " << MyFile.GetFieldType( fname ) + << " length: " << MyFile.GetFieldLen( fname ) + << std::endl; + std::cout << "BIRTHDATE is type: " << MyFile.GetFieldType( birthdate ) + << " length: " << MyFile.GetFieldLen( birthdate ) + << std::endl; + std::cout << "AMOUNT is type: " << MyFile.GetFieldType( amount ) + << " length: " << MyFile.GetFieldLen( amount ) + << std::endl; + std::cout << "SWITCH is type: " << MyFile.GetFieldType( sw ) + << " length: " << MyFile.GetFieldLen( sw ) + << std::endl; + std::cout << "MEMO1 is type: " << MyFile.GetFieldType( memo ) + << " length: " << MyFile.GetFieldLen( memo ) + << std::endl << std::endl; + + std::cout << "Sample GetRecord" << std::endl; + MyFile.GetRecord( 1L ); + MyFile.GetField( lname, buf ); + std::cout << "Name 1 = " << buf << std::endl; + std::cout << "Name 1 = " << MyFile.GetStringField( lname ) << std::endl; + + f = MyFile.GetFloatField( f1 ); + std::cout << "FLOAT1 = " << f << std::endl; + f = MyFile.GetFloatField( "FLOAT2" ); + std::cout << "FLOAT2 = " << f << std::endl; + + std::cout << "Sample GetRecordBuf" << std::endl; + p = MyFile.GetRecordBuf(); /* pointer to record buffer */ + for( i = 0; i < 49; i++ ) std::cout << *p++; /* display the buffer */ + + std::cout << std::endl << "Loop through forwards..." << std::endl; + rc = MyFile.GetFirstRecord(); + while( rc == XB_NO_ERROR ) { + MyFile.GetField( lname, buf ); + std::cout << MyFile.GetCurRecNo(); + std::cout << " Name = " << buf << std::endl; + rc = MyFile.GetNextRecord(); +#ifdef XB_MEMO_FIELDS + if( MyFile.MemoFieldExists( memo )) + std::cout << "Memo field MEMO1 len = " << MyFile.GetMemoFieldLen(memo) + << std::endl; +#endif + } + + std::cout << "Sample PutRecord" << std::endl; + MyFile.PutField( lname, "Stantonbob" ); + MyFile.PutField( lname, "Sally" ); + MyFile.PutRecord( MyFile.GetCurRecNo() ); + + std::cout << "Loop through backwards.." << std::endl; + rc = MyFile.GetLastRecord(); + while( rc == XB_NO_ERROR ){ + std::cout << "Last Name = " << MyFile.GetStringField( lname ) << std::endl; + std::cout << "Logical Field = " << MyFile.GetLogicalField( "SWITCH" ) + << std::endl; + rc = MyFile.GetPrevRecord(); + } + + std::cout << std::endl; + MyFile.CloseDatabase(); /* close database */ + return 0; +} |