Getting Started
Introduction
Sample Programs
IDEs
History
Advice
Mini-Tutorial
Tutorials
Code Snippets

Resources
Web Sites
More Tutorials
Forums
Vendors/Tools
Books
Magazines
Newsletters
NewsGroups
User Groups
Talk Shows
Blogs

Controls
Overview
Button
Check3State
Checkbox
ComboBox
Frame
Graphic
Image
ImageX
ImgButton
ImgButtonX
Label
Line
ListBox
ListView
Option
Progress Bar
Scrollbar
StatusBar
TAB
TextBox
Toolbar
TreeView

GBIC >> PowerBASIC >> Tutorials >> Databases

PowerBASIC Information Center Tutorials
These tutorials were written to help you get a quick, but thorough, understanding of PowerBASIC - the scope of the language as well as it's specific capabilities.

Introduction       Projects       Language           Messages       Functions           Advanced
  • Overview
  • Examples
  • IDE
  • Compilation
  • Distribution
  • Project Files
  • DDT Windows
  • Controls
  • Menus
  • Dialogs  
  • Help Files
  • Resources  
  • Templates  
  • Project Shell  
  • Syntax
  • Operators
  • Data Types
  • Variables
  • Scope
  • Declarations  
  • Procedures
  • Flow Control
  • Windows
  • Messages
  • Callbacks
  • Mouse
  • Keyboard
  • Dialogs
  • Controls
  • Subclassing
  • Arithmetic
  • Trig  
  • Strings
  • Arrays
  • Date/Time
  • Printing
  • Files
  • Folders
  • Keyboard
  • Mouse
  • Sound
  • System
  • Error Traps
  • Debugging
  • Objects
  • Graphics
  • Databases
  • API
  • DLLs
  • ASM
  • Threads
  • Database Function Summary
    PowerBASIC has no built-in database support, such as standard SQL or Access file read/write capabilities.

    Custom Database Applications
    Despite having no built-in, standard database support, several of the file and string functions can be used to create simple, fast database applications where the database consists of records/lines of string data.

    For example, suppose a database record includes a name, state and zip code and that a file "data.txt" contains the following three records.

        Bob:::Texas:::75300
        Mary:::Arkansas:::77001
        Helen:::Maine:::45622
    

    Note that any separating character string can be used as long as it will not be used as data in any of the records. In this example, ":::" was used because because no Name/State/Zip will never be that value.

    A simple database application using this basic file structure would be as follows. The basic technique is to put each text line into a string array, then use PowerBASIC functions to pull out fields from each record as needed. When all changes are made to the array, simply write it back out to the file, overwriting any prior content.

        1. Open Database (read text lines into array):
               Open "data.txt" For Input as #1
               Dim MyData() as String
     
               'first way to create array with 1 record per element
               'resizes array each time it reads a line of text
               While NOT eof(1)
                  Line Input #1, MyData(Ubound)
                  if NOT eof(1) then
                      REDIM Preserve MyData(Ubound(MyData)+1)
                  end if
               Wend
     
              'second way to crate array with 1 record per element
              'uses filescan to count number of lines
               FILESCAN #1, RECORDS to iCount
               REDIM MyDATA(iCount-1)
               For i = 0 to UBound(MyData)
                  Line Input #1, MyData(i)
               Next i
    
              'third way to create array with 1 record per element
              'if all records contain same number of characters
               iCount = LOF(1) / iRecordSize
               REDIM MyDATA(iCount-1)
               For i = 0 to UBound(MyData)
                  Line Input #1, MyData(i)
               Next i
    
    
              Close #1
    
        2. Get/Set Name/State/Zip from any array element
               Dim RecordData(2) As String   '3 elements
               Dim iRecord as Long          
               For i = 0 to Ubound(MyArray)
    
                  'first way to get Name/State/Zip
                  PARSE MyData(iRecord), RecordData  'separates data
                  Name$ = MyData(0)          'optional, for convenience only
                  State$ = MyData(1)         'optional, for convenience only
                  Zip$ = MyData(2)           'optional, for convenience only
    
                  'second way to get Name/State/Zip
                  Name$  = Parse$(MyData(iRecord), ":::", 1)
                  State$ = Parse$(MyData(iRecord), ":::", 2)
                  Zip$   = Parse$(MyData(iRecord), ":::", 3)
    
                  'now use Name/State/Zip (including setting their values)
                      .... program statements using values
                      .... assign values to Name$, State$, Zip$
    
                  'save results
                  MyData(iRecord) = Build$(Name$, ":::", State$, ":::", Zip$)
               Next i
    
        2A.   'Use ARRAY INSERT to add records
              'Use ARRAY DELETE to delete records
              'Use ARRAY SCAN to search 
              'Use ARRAY SORT to sort records
    
        3. Write changed array to file:
               Open "data.txt" for Output as #1
               For i = 0 to Ubound(MyArray)
                  Print #1, MyArray(i)
               Next i
    

    For syntax and examples, follow the links to FILESCAN, PARSE and REDIM. These functions were used in the above approaches to treating a text file as a database.

    If you have any suggestions or corrections, please let me know.