home *** CD-ROM | disk | FTP | other *** search
- // Tb12.prg
- //
- // Tbrowse code demonstrating how to use a for and a while clause -
- // generic version
- //
- // Link with tbutils, tb07, Dict
-
- #include "Inkey.ch"
- #include "Tbutils.ch"
-
- MEMVAR getList
-
- FUNCTION Tb12
-
- FIELD Lname, Fname, AcBal IN Tbdbf1
- LOCAL oTbr
- LOCAL lExitRequested := .F., nKey
-
- LOCAL bWhile
- LOCAL bFor
- LOCAL bFirst
- LOCAL bLast
- LOCAL cSearcher
-
- USE Tbdbf1
- IF !file("Tbdbf1.ntx")
- INDEX ON Upper(Lname + Fname) TO Tbdbf1
- ELSE
- SET INDEX TO Tbdbf1
- ENDIF
-
- // Browse entire database
- CLEAR SCREEN
- @ 0, 0 TO MaxRow(), MaxCol()
- bFirst := {|| DbGoTop() }
- bLast := {|| DbGoBottom() }
- bFor := {|| .T. }
- bWhile := {|| .T. }
-
- oTbr := TBForWhile(bFirst, bLast, bFor, bWhile)
- oTbr:nTop := 1
- oTbr:nLeft := 1
- oTbr:nBottom := MaxRow() - 1
- oTbr:nRight := MaxCol() - 1
-
- addAllFields(oTbr)
- oTbr:insColumn(1, TBColumnNew("Rec #", {|| Recno() }))
- oTbr:freeze := 1
-
- oTbr:goTop()
- IF !Eval(bWhile)
- Alert("No matching records", {"OK"})
- ELSE
- MyBrowse2(oTbr)
- ENDIF
-
- // Browse records WHILE Upper(Lname) = cSearcher
- CLEAR SCREEN
- cSearcher := Space(Len(Lname))
- @ 10, 10 SAY "Enter searcher" GET cSearcher
- READ
- cSearcher := Trim(Upper(cSearcher))
-
- CLEAR SCREEN
- @ 0, 0 TO MaxRow(), MaxCol()
-
- bWhile := {|| Upper(Lname) = cSearcher }
- bFor := {|| .T. }
- bFirst := {|| DbSeek(cSearcher) }
- bLast := {|| DbSeek(INCLAST(cSearcher), .T.), DbSkip(-1) }
-
- oTbr := TBForWhile(bFirst, bLast, bFor, bWhile)
- oTbr:nTop := 1
- oTbr:nLeft := 1
- oTbr:nBottom := MaxRow() - 1
- oTbr:nRight := MaxCol() - 1
-
- addAllFields(oTbr)
-
- oTbr:goTop()
- IF !Eval(bWhile)
- Alert("No matching records", {"OK"})
- MyBrowse2(oTbr)
- ELSE
- MyBrowse2(oTbr)
- ENDIF
-
- // Browse records WHILE upper(Lname) >= "S" .AND.
- // upper(Lname) <= "T"
- // FOR AcBal >= 0
- CLEAR SCREEN
- @ 0, 0 TO MaxRow(), MaxCol()
- bWhile := {|| Upper(Lname) >= "S" .AND. ;
- Upper(Lname) <= "T" }
- bFor := {|| AcBal >= 0 }
- bFirst := {|| DbSeek("S") }
- bLast := {|| DbSeek("U", .T.), DbSkip(-1) }
-
- oTbr := TBForWhile(bFirst, bLast, bFor, bWhile)
- oTbr:nTop := 1
- oTbr:nLeft := 1
- oTbr:nBottom := MaxRow() - 1
- oTbr:nRight := MaxCol() - 1
- addAllFields(oTbr)
-
- oTbr:goTop()
- IF !eval(bWhile)
- Alert("No matching records", {"OK"})
- ELSE
- MyBrowse2(oTbr)
- ENDIF
-
- // Browse records FOR upper(Lname) = "S" .OR. ;
- // upper(Lname) = "T"
- CLEAR SCREEN
- @ 0, 0 TO MaxRow(), MaxCol()
- bWhile := {|| .T. }
- bFor := {|| Upper(Lname) = "S" .OR. ;
- Upper(Lname) = "T" }
- bFirst := {|| DbGoTop() }
- bLast := {|| DbGoBottom() }
-
- oTbr := TBForWhile(bFirst, bLast, bFor, bWhile)
- oTbr:nTop := 1
- oTbr:nLeft := 1
- oTbr:nBottom := MaxRow() - 1
- oTbr:nRight := MaxCol() - 1
- addAllFields(oTbr)
-
- oTbr:goTop()
- IF !Eval(bWhile)
- Alert("No matching records", {"OK"})
- ELSE
- MyBrowse2(oTbr)
- ENDIF
-
- RETURN NIL
-
-