/* * $Id: apollo.prg 12734 2009-10-19 23:21:43Z vszakats $ */ /* * Harbour Project source code: * Test VistaSoftware's Apollo database driver. See http://www.VistaSoftware.com * * Copyright 2001 Patrick Mast * www - http://www.harbour-project.org * * 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, 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 software; see the file COPYING. If not, write to * the Free Software Foundation, Inc., 59 Temple Place, Suite 330, * Boston, MA 02111-1307 USA (or visit the web site http://www.gnu.org/). * * As a special exception, the Harbour Project gives permission for * additional uses of the text contained in its release of Harbour. * * The exception is that, if you link the Harbour libraries with other * files to produce an executable, this does not by itself cause the * resulting executable to be covered by the GNU General Public License. * Your use of that executable is in no way restricted on account of * linking the Harbour library code into it. * * This exception does not however invalidate any other reasons why * the executable file might be covered by the GNU General Public License. * * This exception applies only to the code released by the Harbour * Project under the name Harbour. If you copy code from other * Harbour Project or Free Software Foundation releases into a copy of * Harbour, as the General Public License permits, the exception does * not apply to the code that you add in this way. To avoid misleading * anyone as to the status of such modified files, you must delete * this exception notice from them. * * If you write modifications of your own for Harbour, it is your choice * whether to permit this exception to apply to your modifications. * If you do not wish that, delete this exception notice. * */ #include "apollo.ch" PROCEDURE Main() LOCAL nAlias LOCAL f SET DATE FRENCH SET CENTURY ON sx_SetMemoBlockSize( 32 ) sx_SetDateFormat( SX_FRENCH ) sx_SetCentury( .T. ) ? "Apollo version " + sx_Version() ? "" ? "Cleaning up files.." FErase( "test.dbf" ) FErase( "test.smt" ) FErase( "test.nsx" ) ? "OK!" ? "" ? "Creating a new database file.." nAlias := sx_CreateNew("test.dbf",; // full path filename "test1",; // Alias SX_SDENSX,; // rdeType 6) // Maximum fields added by sx_CreateField IF nAlias == 0 ? "Error creating database" RETURN ENDIF sx_CreateField("FIRST" ,"C",40,0) sx_CreateField("LAST" ,"C",40,0) sx_CreateField("NOTES" ,"M",10,0) sx_CreateField("AGE" ,"N", 4,0) sx_CreateField("MARRIED" ,"L", 1,0) sx_CreateField("BIRTDATE","D", 8,0) sx_CreateExec() sx_Close() ?? "OK!" nAlias := sx_Use("test.dbf","test2",SX_EXCLUSIVE,SX_SDENSX) sx_Zap() IF Valtype(nAlias) == "N" .AND. nAlias != 0 ? "OK opening 'test.dbf'" ? "Adding 1000 records..." FOR f := 1 to 1000 sx_AppendBlank() sx_Replace("FIRST" , SX_R_CHAR , "Patrick " + Str( f ) ) sx_Replace("LAST" , SX_R_CHAR , LTrim( Str( f ) ) + " Mast" ) sx_Replace("NOTES" , SX_R_MEMO , "This is record " + LTrim( Str( f ) ) ) sx_Replace("AGE" , SX_R_DOUBLE , f ) sx_Replace("BIRTDATE" , SX_R_DATESTR, DtoC( Date() ) ) // sx_Replace("MARRIED" , SX_R_LOGICAL, iif(f%5==2,1,0) ) /* Logical does not work yet.. */ sx_Commit() NEXT ? "Creating Index..." sx_IndexTag(,"LAST","LAST+FIRST",0) ? "Created a HiPer-Six index. See 'test.nsx'" sx_GoTop() WHILE !sx_Eof() ? "" ? "RecNo...... : " + LTrim( Str( sx_RecNo() ) ) ? "Last name.. : " + sx_GetVariant( "LAST" ) ? "Birth date. : " + sx_GetVariant( "BIRTDATE" ) ? "Married.... : " + iif( sx_GetLogical( "MARRIED" ) , "Yes", "No, SINGLE!!") sx_Skip(1) ENDDO ? "" sx_GoTop() sx_SetSoftSeek( .F. ) // SetSoftSeek OFF IF sx_Seek( "928 Mast" ) ? "String '928 Mast' found in record number "+ LTrim( Str( sx_RecNo() ) ) ELSE ? "String '928 Mast' NOT Found..." ENDIF ? "" ? "There are "+LTrim( Str( sx_RecCount() ) )+" records in the database" ? ? "Reindexing now..." sx_ReIndex() ?? "OK!" sx_Close() ELSE ? "ERROR Opening 'test.dbf'" ENDIF return