Q(uick)BASIC Statement: DELETETABLE

Quick View

DELETETABLE

Removes a table and any indexes based on the table from an ISAM database

Worth knowing

Useful and cross-version information about the programming environments of QBasic and QuickBasic.

Syntax
  • DELETETABLE Database$, tablename$
Description/Parameter(s)
  • The argument database$ specifies an optional device, followed by a filename or path conforming to the DOS naming conventions. The database$ must be the name of an ISAM file.
  • The argument tablename$ is the name used in the OPEN statement to open the table.

Usage Notes

  • If the specified file is not an ISAM database file, BASIC generates the error message, "Bad file mode."

Important

  • Use DELETETABLE with caution. DELETETABLE permanently removes the specified table from the database.
Example

This example uses the CREATETABLE statement to create a new table in an ISAM file and uses the SEEK, RETRIEVE, UPDATE, and INSERT statements to insert records into it. It uses the LOF function to display the number of records in the new table and then destroys the table with DELETETABLE.
Note: To run this program, you must load the ISAM TSR program PROISAMD.EXE. Also, this program assumes a file called BOOKS.MDB exists in the current directory. BOOKS.MDB is a sample ISAM file that SETUP copies to your disk.
If this program is interrupted before the database is closed, the file BOOKS.MDB may be left in an inconsistent state.

DEFINT A-Z TYPE BookRec IDNum AS DOUBLE 'Unique ID number for each book. Price AS CURRENCY 'Book's price. Edition AS INTEGER 'Book's Edition Title AS STRING * 50 'Book's title. Publisher AS STRING * 50 'Book's publisher. Author AS STRING * 36 'Book's author. END TYPE CONST Database = "BOOKS.MDB" 'Name of the disk file. CONST tablename = "BookStock" 'Name of the table. DIM Library AS BookRec 'Variable for current record. DIM MinPrice AS CURRENCY 'SEEK criteria. CLS 'Open existing table. LibraryFile = FREEFILE OPEN Database FOR ISAM BookRec tablename AS LibraryFile CREATEINDEX LibraryFile, "Library", 0, "Price" SETINDEX LibraryFile, "Library" 'Create and open a new table. NewFile = FREEFILE OPEN Database FOR ISAM BookRec "PricyBooks" AS NewFile 'Fill new table with records for all books with price >= MinPrice. DO DO INPUT "Display books that cost as much or more than "; MinPrice IF MinPrice < 0 THEN PRINT "Positive values only, please." LOOP UNTIL MinPrice >= 0 SEEKGE LibraryFile, MinPrice IF EOF(LibraryFile) THEN PRINT "There are no books greater than"; MinPrice END IF LOOP WHILE EOF(LibraryFile) DO RETRIEVE LibraryFile, Library INSERT NewFile, Library MOVENEXT LibraryFile LOOP UNTIL EOF(LibraryFile) 'Loop through new table twice: first time ask for price increase; 'second time display new price. FOR count = 1 TO 2 CLS PRINT SPC(18); "There are"; LOF(NewFile); "books that cost at least "; PRINT USING ("$###.##"); MinPrice PRINT " ID Number"; SPC(3); "Title"; SPC(20); "Author"; PRINT SPC(11); "Publisher"; SPC(10); "Price" VIEW PRINT 3 TO 20 MOVEFIRST NewFile DO RETRIEVE NewFile, Library PRINT Library.IDNum; " "; LEFT$(Library.Title, 20); IF LEN(RTRIM$(Library.Title)) > 20 THEN PRINT "... "; ELSE PRINT " "; END IF PRINT LEFT$(Library.Author, 15); " "; PRINT LEFT$(Library.Publisher, 16); " "; PRINT USING ("$###.##"); Library.Price MOVENEXT NewFile LOOP UNTIL EOF(NewFile) IF count = 1 THEN VIEW PRINT 20 TO 24: LOCATE 20, 1 DO INPUT "Increase cost by how much (0-100%)"; increase IF increase < 0 OR increase > 100 THEN PRINT "Illegal value" LOOP UNTIL increase >= 0 AND increase <= 100 'Update records in PricyBooks. MOVEFIRST NewFile DO RETRIEVE NewFile, Library Library.Price = (Library.Price * (100 + increase)) / 100 'Overwrite record with increased price. UPDATE NewFile, Library 'Force ISAM to flush the buffer to disk. CHECKPOINT MOVENEXT NewFile LOOP UNTIL EOF(NewFile) END IF VIEW PRINT 1 TO 19 NEXT count 'Destroy index and temporary table, close files. DELETEINDEX LibraryFile, "Library" CLOSE DELETETABLE Database, "PricyBooks" END