home *** CD-ROM | disk | FTP | other *** search
/ Programming Tool Box / SIMS_2.iso / bp_6_93 / bonus / winer / dbedit.bas < prev    next >
BASIC Source File  |  1992-05-12  |  2KB  |  109 lines

  1. '*********** DBEDIT.BAS - edits a record in a DBF file
  2.  
  3. 'Copyright (c) 1992 Ethan Winer
  4.  
  5. DEFINT A-Z
  6. '$INCLUDE: 'dbf.bi'
  7. '$INCLUDE: 'dbaccess.bi'
  8.  
  9. DIM Header AS DBFHeadStruc
  10. REDIM FldStruc(1 TO 1) AS FieldStruc
  11.  
  12. CLS
  13. LINE INPUT "Enter .DBF file name: ", DBFName$
  14. IF INSTR(DBFName$, ".") = 0 THEN
  15.   DBFName$ = DBFName$ + ".DBF"
  16. END IF
  17.  
  18. CALL OpenDBF(1, DBFName$, Header, FldStruc())
  19.  
  20. Record$ = SPACE$(Header.RecLen)
  21. RecNum& = 1
  22. RecChanged = 0
  23.  
  24. GOSUB GetTheRecord
  25.  
  26. DO
  27.   PRINT "What do you want to do (Next, Prior, Edit, ";
  28.   PRINT "Delete, Undelete, Add, Quit)? ";
  29.   SELECT CASE UCASE$(INPUT$(1))
  30.     CASE "N"
  31.       IF RecChanged THEN
  32.         CALL SetRecord(1, RecNum&, Record$, Header)
  33.       END IF
  34.       RecNum& = RecNum& + 1
  35.       IF RecNum& > Header.TRecs THEN
  36.         RecNum& = 1
  37.       END IF
  38.       GOSUB GetTheRecord
  39.       
  40.     CASE "P"
  41.       IF RecChanged THEN
  42.         CALL SetRecord(1, RecNum&, Record$, Header)
  43.       END IF
  44.       RecNum& = RecNum& - 1
  45.       IF RecNum& < 1 THEN
  46.         RecNum& = Header.TRecs
  47.       END IF
  48.       GOSUB GetTheRecord
  49.       
  50.     CASE "E"
  51. Edit:
  52.       PRINT
  53.       INPUT "Enter the field number:"; Fld
  54.       DO
  55.         PRINT "New "; FldStruc(Fld).FName;
  56.         INPUT Text$
  57.         IF LEN(Text$) <= FldStruc(Fld).FLen THEN EXIT DO
  58.         PRINT "Too long, only "; FldStruc(Fld).FLen
  59.       LOOP
  60.       CALL SetField(Record$, Text$, Fld, FldStruc())
  61.       RecChanged = -1
  62.       GOSUB DisplayRec
  63.       
  64.     CASE "D"
  65.       MID$(Record$, 1) = "*"
  66.       RecChanged = -1
  67.       GOSUB DisplayRec
  68.       
  69.     CASE "U"
  70.       MID$(Record$, 1, 1) = " "
  71.       RecChanged = -1
  72.       GOSUB DisplayRec
  73.  
  74.     CASE "A"
  75.       Header.TRecs = Header.TRecs + 1
  76.       RecNum& = Header.TRecs
  77.       LSET Record$ = ""
  78.       GOTO Edit
  79.       
  80.     CASE ELSE
  81.       EXIT DO
  82.   END SELECT
  83. LOOP
  84.  
  85. IF RecChanged THEN
  86.   CALL SetRecord(1, RecNum&, Record$, Header)
  87. END IF
  88. CloseDBF 1, Header.TRecs
  89. END
  90.  
  91.  
  92. GetTheRecord:
  93.   CALL GetRecord(1, RecNum&, Record$, Header)
  94.  
  95. DisplayRec:
  96.   CLS
  97.   PRINT "Record "; RecNum&; " of "; Header.TRecs;
  98.   IF Deleted%(Record$) THEN PRINT " (Deleted)";
  99.  
  100.   PRINT
  101.   PRINT
  102.   FOR Fld = 1 TO Header.TFields
  103.     FldText$ = GetField$(Record$, Fld, FldStruc())
  104.     PRINT FldStruc(Fld).FName, FldText$
  105.   NEXT
  106.   PRINT
  107.  
  108. RETURN
  109.