home *** CD-ROM | disk | FTP | other *** search
- // Tb10.prg
- //
- // Tbrowse code demonstrating how to use a FOR clause
- // Hard coded - AcBal > 0
- //
- // Link with tbutils, tb07
-
- #include "inkey.ch"
-
- FUNCTION Tb10
-
- FIELD Lname, Fname, AcBal IN TbDbf1
-
- LOCAL oTbr := tbrowseNew(1, 1, MaxRow() - 1, MaxCol() - 1), ;
- lExitRequested := .F., nKey
-
- USE TbDbf1
- IF !File("Tbdbf1.ntx")
- INDEX ON upper(Lname + Fname) TO TbDbf1
- ELSE
- SET INDEX TO TbDbf1
- ENDIF
-
- CLEAR SCREEN
-
- @ 0, 0 TO MaxRow(), MaxCol()
-
- AddAllFields(oTbr)
- oTbr:insColumn(1, TBColumnNew("Rec #", {|| recno() }))
- oTbr:freeze := 1
- oTbr:goTopBlock := {|| ForStart() }
- oTbr:goBottomBlock := {|| ForEnd() }
- oTbr:skipBlock := {|n| ForSkip(n) }
-
- oTbr:goTop()
- IF AcBal <= 0
- alert("No matching records", {"OK"})
- ELSE
- MyBrowse2(oTbr)
- ENDIF
-
- RETURN NIL
-
-
- // goTopBlock for hard coded for condition -
- // FOR AcBal > 0
-
- FUNCTION ForStart
-
- FIELD AcBal IN TbDbf1
-
- GOTO TOP
- DO WHILE !Eof() .AND. AcBal <= 0
- SKIP
- ENDDO
-
- // Already at Eof() if AcBal <= 0
-
- RETURN NIL
-
-
- // goBottomBlock for hard coded for condition -
- // FOR AcBal > 0
-
- FUNCTION ForEnd
-
- FIELD AcBal IN TbDbf1
-
- GOTO BOTTOM
- DO WHILE !Bof() .AND. AcBal <= 0
- SKIP -1
- ENDDO
-
- IF Bof()
- // no records match filter
- GOTO 0
- ENDIF
-
- RETURN NIL
-
-
- // skipBlock for hard coded for condition -
- // FOR AcBal > 0
-
- FUNCTION ForSkip(nToSkip)
-
- FIELD AcBal IN TbDbf1
- LOCAL nSkipped := 0, ;
- nLastValidRecNum := Recno()
-
- IF nToSkip == 0
- SKIP 0
- RETURN 0
- ENDIF
-
- IF nToSkip > 0
- DO WHILE nSkipped < nToSkip .AND. !Eof()
- SKIP
- DO WHILE AcBal <= 0 .AND. !Eof()
- SKIP
- ENDDO
- IF AcBal > 0
- nSkipped++
- nLastValidRecNum := Recno()
- ENDIF
- ENDDO
- IF Eof()
- GOTO nLastValidRecNum
- ENDIF
- ELSE
- DO WHILE nSkipped > nToSkip .AND. !Bof()
- SKIP -1
- DO WHILE AcBal <= 0 .AND. !Bof()
- SKIP -1
- ENDDO
- IF AcBal > 0
- nSkipped--
- nLastValidRecNum := Recno()
- ENDIF
- ENDDO
- IF Bof()
- GOTO nLastValidecNum
- ENDIF
- ENDIF
-
- RETURN nSkipped