home *** CD-ROM | disk | FTP | other *** search
/ Liren Large Software Subsidy 5 / 05.iso / a / a065 / 1.img / TBPRGS.EXE / TB12.PRG < prev    next >
Encoding:
Text File  |  1992-03-04  |  3.5 KB  |  140 lines

  1.     // Tb12.prg
  2.     //
  3.     // Tbrowse code demonstrating how to use a for and a while clause -
  4.     // generic version
  5.     //
  6.     // Link with tbutils, tb07, Dict
  7.  
  8.     #include "Inkey.ch"
  9.     #include "Tbutils.ch"
  10.  
  11.     MEMVAR getList
  12.  
  13.     FUNCTION Tb12
  14.     
  15.     FIELD Lname, Fname, AcBal IN Tbdbf1
  16.     LOCAL oTbr
  17.     LOCAL lExitRequested := .F., nKey
  18.  
  19.     LOCAL bWhile
  20.     LOCAL bFor
  21.     LOCAL bFirst
  22.     LOCAL bLast
  23.     LOCAL cSearcher
  24.  
  25.       USE Tbdbf1
  26.       IF !file("Tbdbf1.ntx")
  27.         INDEX ON Upper(Lname + Fname) TO Tbdbf1
  28.       ELSE
  29.         SET INDEX TO Tbdbf1
  30.       ENDIF
  31.  
  32.       // Browse entire database
  33.       CLEAR SCREEN
  34.       @ 0, 0 TO MaxRow(), MaxCol()
  35.       bFirst := {|| DbGoTop()    }
  36.       bLast  := {|| DbGoBottom() }
  37.       bFor   := {|| .T. }
  38.       bWhile := {|| .T. }
  39.  
  40.       oTbr := TBForWhile(bFirst, bLast, bFor, bWhile)
  41.       oTbr:nTop := 1
  42.       oTbr:nLeft := 1
  43.       oTbr:nBottom := MaxRow() - 1
  44.       oTbr:nRight  := MaxCol() - 1
  45.  
  46.       addAllFields(oTbr)
  47.       oTbr:insColumn(1, TBColumnNew("Rec #", {|| Recno() }))
  48.       oTbr:freeze := 1
  49.  
  50.       oTbr:goTop()
  51.       IF !Eval(bWhile)
  52.         Alert("No matching records", {"OK"})
  53.       ELSE
  54.         MyBrowse2(oTbr)
  55.       ENDIF
  56.  
  57.       // Browse records WHILE Upper(Lname) = cSearcher
  58.       CLEAR SCREEN
  59.       cSearcher := Space(Len(Lname))
  60.       @ 10, 10 SAY "Enter searcher" GET cSearcher
  61.       READ
  62.       cSearcher := Trim(Upper(cSearcher))
  63.  
  64.       CLEAR SCREEN
  65.       @ 0, 0 TO MaxRow(), MaxCol()
  66.  
  67.       bWhile   := {|| Upper(Lname) = cSearcher }
  68.       bFor     := {|| .T. }
  69.       bFirst   := {|| DbSeek(cSearcher) }
  70.       bLast    := {|| DbSeek(INCLAST(cSearcher), .T.), DbSkip(-1) }
  71.  
  72.       oTbr := TBForWhile(bFirst, bLast, bFor, bWhile)
  73.       oTbr:nTop := 1
  74.       oTbr:nLeft := 1
  75.       oTbr:nBottom := MaxRow() - 1
  76.       oTbr:nRight  := MaxCol() - 1
  77.  
  78.       addAllFields(oTbr)
  79.  
  80.       oTbr:goTop()
  81.       IF !Eval(bWhile)
  82.         Alert("No matching records", {"OK"})
  83.         MyBrowse2(oTbr)
  84.       ELSE
  85.         MyBrowse2(oTbr)
  86.       ENDIF
  87.  
  88.       // Browse records WHILE upper(Lname) >=  "S" .AND.
  89.       //                      upper(Lname) <= "T"
  90.       //                FOR   AcBal >= 0
  91.       CLEAR SCREEN
  92.       @ 0, 0 TO MaxRow(), MaxCol()
  93.       bWhile   := {|| Upper(Lname) >=  "S" .AND. ;
  94.                       Upper(Lname) <= "T" }
  95.       bFor     := {|| AcBal >= 0 }
  96.       bFirst   := {|| DbSeek("S") }
  97.       bLast    := {|| DbSeek("U", .T.), DbSkip(-1) }
  98.  
  99.       oTbr := TBForWhile(bFirst, bLast, bFor, bWhile)
  100.       oTbr:nTop := 1
  101.       oTbr:nLeft := 1
  102.       oTbr:nBottom := MaxRow() - 1
  103.       oTbr:nRight  := MaxCol() - 1
  104.       addAllFields(oTbr)
  105.  
  106.       oTbr:goTop()
  107.       IF !eval(bWhile)
  108.         Alert("No matching records", {"OK"})
  109.       ELSE
  110.         MyBrowse2(oTbr)
  111.       ENDIF
  112.  
  113.       // Browse records FOR upper(Lname) = "S" .OR. ;
  114.       //                    upper(Lname) = "T"
  115.       CLEAR SCREEN
  116.       @ 0, 0 TO MaxRow(), MaxCol()
  117.       bWhile   := {|| .T. }
  118.       bFor     := {|| Upper(Lname) = "S" .OR. ;
  119.                       Upper(Lname) = "T" }
  120.       bFirst   := {|| DbGoTop() }
  121.       bLast    := {|| DbGoBottom() }
  122.  
  123.       oTbr := TBForWhile(bFirst, bLast, bFor, bWhile)
  124.       oTbr:nTop := 1
  125.       oTbr:nLeft := 1
  126.       oTbr:nBottom := MaxRow() - 1
  127.       oTbr:nRight  := MaxCol() - 1
  128.       addAllFields(oTbr)
  129.  
  130.       oTbr:goTop()
  131.       IF !Eval(bWhile)
  132.         Alert("No matching records", {"OK"})
  133.       ELSE
  134.         MyBrowse2(oTbr)
  135.       ENDIF
  136.  
  137.     RETURN NIL
  138.  
  139.  
  140.