home *** CD-ROM | disk | FTP | other *** search
/ Monster Media 1994 #1 / monster.zip / monster / WIN_UTL1 / DB4PK1.ZIP / README.TXT < prev   
Text File  |  1994-02-10  |  5KB  |  117 lines

  1. db4vbpk1.zip  Feb. 10, 1994
  2.  
  3. Darryl J. Buchanan
  4. Buchanan & Associates
  5. 6120 E. 77 St.
  6. Tulsa, OK 74136
  7. (918)491-9590 (Answering machine)
  8. CompuServe 71435,1442
  9.  
  10. dBASE IV file packer application for Visual Basic 3.0.
  11.  
  12. A while back I wrote a Visual Basic application using dBASE IV data
  13. files.  I needed to include the ability for users to perform periodic
  14. maintenance on the files.  This included packing the files to get rid of
  15. records marked for deletion.  Visual Basic does not include a
  16. function to pack dBASE files, so I wrote a subroutine called
  17. PackTable to do the job.
  18.  
  19. PackTable works by:
  20.  
  21. 1. Opening the database for exclusive access.
  22.  
  23. 2. Reading the structure of the existing file and index.
  24.  
  25. 3. Renaming the previous .dbf, .mdx, and .dbt files to the temporary
  26.    names XXXXXXXX.DBF, XXXXXXXX.MDX, and (if the .DBT file exists)
  27.    XXXXXXXX.DBT.  This function assumes that you are using maintained
  28.    indexes and therefore have a .MDX index file.  If you don't have
  29.    maintained indexes, then you can comment out or remove the code having
  30.    to do with creating the indexes.  I think I trapped everything ok
  31.    so if you don't have a maintained index file it still works.  I
  32.    never create .DBF files without indexes so I haven't really given
  33.    it a good test.
  34.  
  35. 4. Creating new .DBF, .MDX, and (if needed) .DBT files using the
  36.    original names.
  37.  
  38. 5. Open the old .DBF file (that has been renamed to XXXXXXXX.DBF).
  39.    Read all the records from it and write it to the new .DBF file
  40.    while also indexing the file.  The records that have been marked
  41.    for deletion are not read in and therefore are effectively
  42.    'packed' out of the new files.
  43.  
  44. 6. Finally, kill the old, renamed XXXXXXXX.* files.
  45.  
  46. Misc:
  47.  
  48. It was necessary to rename the old file to the temp files, then
  49. create the new files using the old file names in that order.
  50. dBASE IV .MDX index files maintain an original table name in the
  51. header of the index file.  Therefore, it was necessary that the new
  52. file have the old original name when it was created.  My first try at
  53. this I created a new XXXXXXXX.DBF file, read the records from the old
  54. .DBF file while writing them to the XXXXXXXX.DBF file.  Then I deleted
  55. the old file and renamed the XXXXXXXX.* files to the original file names.
  56. This works fine on Visual Basic.  But when I tried to read the tables with
  57. Paradox For Windows, it claimed the index (.MDX) file was corrupt. 
  58. After much head scratching and binary file comparing I finally found
  59. that the file name is saved in the index when the index is first
  60. created.  The Visual Basic database engine seems to ignore this.  But
  61. Paradox For Windows must use this as some kind of integrity check.
  62.  
  63. I'm not sure if this works for dBASE III or dBASE III+ files.  I
  64. don't use those kind of files so I haven't bothered testing with
  65. them.  I think it will work ok for the .DBF file, but I'm not sure
  66. what it will do with the .NDX files.
  67.  
  68. Caveats:  (Did I spell that right?)
  69.  
  70. 1. This function works by creating a copy of your original file.
  71.    You must have enough disk space to hold what could be a file as
  72.    large as your original.  If you have lots of deleted records,
  73.    your new file will be smaller.
  74.  
  75. 2. I haven't thoroughly tested this with files with .DBT (memo)
  76.    files.  I think it works, but test before you leap.
  77.  
  78. 3. ALWAYS!!!  ALWAYS!!! BACK UP YOUR DATA FILE, INDEXES, AND .DBT
  79.    FILES BEFORE RUNNING PACKTABLE.  RUN THIS AT YOUR OWN RISK!!!
  80.    TEST THOROUGHLY!!
  81.  
  82. 4. You may freely include this subroutine in your Visual Basic
  83.    programs.  All I ask is if you find a bug, PLEASE send me an
  84.    E-MAIL note about it.  I'm on CompuServe : 71435,1442.
  85.    Friendly notes are of course also welcome.
  86.  
  87. 5. There is, of course, no warranty or guarantee of ANY kind
  88.    whatsoever with this code.  Use at your own risk.
  89.  
  90. HELP!!!
  91.  
  92. I am looking for a good set of C routines that will let me access
  93. dBASE IV indexed tables with a DOS program.  I've found a set of
  94. routines that work with dBASE III files.  But so far I haven't had
  95. any luck with routines that will work with dBASE IV tables with .MDX
  96. maintained indexes.  If you have any such routines, or know where I
  97. can get some, please send me a message on CompuServe.  If I haven't
  98. found them by 6/1/94, I probably won't need them anymore.  Thanks.
  99.  
  100. The files:
  101.  
  102. PACKTABL BAS     10295 02-10-94   2:14p  The PackTable subroutine.
  103. PACKTABL EXE      9031 02-10-94   2:14p  Sample Exe file.
  104. PACKTABL MAK       413 02-10-94   2:14p  Mak file for the sample exe.
  105. FRMPACKT FRM      1973 02-10-94  10:56a  The form for the sample exe.
  106. README.TXT                               This file.
  107.  
  108. Enjoy.
  109.  
  110. Darryl J. Buchanan
  111. Buchanan & Associates
  112. 6120 E. 77 St.
  113. Tulsa, OK 74136
  114. (918)491-9590 (answering machine)
  115. CompuServe 71435,1442
  116.  
  117.