Tek-Tips is the largest IT community on the Internet today!

Members share and learn making Tek-Tips Forums the best source of peer-reviewed technical information on the Internet!

  • Congratulations SkipVought on being selected by the Tek-Tips community for having the most helpful posts in the forums last week. Way to Go!

OOP way to get a SQL progress bar.

SQL Syntax

OOP way to get a SQL progress bar.

by  myearwood  Posted    (Edited  )
You've probably seen code to SET TALK ON before running your query to show the SQL thermometer/progress bar. First off, all such techniques require you to write several statements before and after the SQL. In a procedural approach you'd have to either build a single routine where you pass in the SQL command for execution OR you'd have to run a preSQL and postSQL pair of routines.

OOP makes the best solution. Have an object prepare the environment for the query during it's init. You then run your query and release the object where it restores the environment in it's destroy.

You'd use it like this...

LOCAL m.loThermo
m.loThermo = NEWOBJECT("cusSQLThermo","cusSQLThermo.VCX")

SELECT SOMEFIELDS FROM SOMETABLE WHERE SOMECONDITION

RELEASE m.loThermo

That's pretty simple. It's made possible by this little class:

Code:
**************************************************
*-- Class:        cussqlthermo (c:\vmp2005\my\cussqlthermo.vcx)
*-- ParentClass:  custom
*-- BaseClass:    custom
*-- Time Stamp:   10/18/05 09:07:11 PM
*
DEFINE CLASS cussqlthermo AS custom


	*-- Holds SET TALK setting at initialization.
	PROTECTED icoldsettalk
	icoldsettalk = ""
	*-- Holds SET NOTIFY setting at initialization.
	icoldsetnotify = ""
	*-- Holds the output window at initialization.
	PROTECTED icoldoutputwindow
	icoldoutputwindow = ""
	*-- Holds the name of the temporary output window.
	PROTECTED icnewoutputwindow
	icnewoutputwindow = ""
	Name = "cussqlthermo"


	PROCEDURE Destroy
		SET TALK OFF
		LOCAL lcNewOutputWindow, lcOldOutputWindow, lcOldSetNotify, lcOldSetTalk
		lcNewOutputWindow = THIS.icNewOutputWindow
		lcOldOutputWindow = THIS.icOldOutputWindow
		lcOldSetNotify = THIS.icOldSetNotify
		lcOldSetTalk = THIS.icOldSetTalk

		IF VERSION(5)>=800
		  SET NOTIFY &lcOldSetNotify.
		ENDIF

		SET TALK &lcOldOutputWindow.

		RELEASE WINDOWS &lcNewOutputWindow.

		SET TALK &lcOldSetTalk.
	ENDPROC


	PROCEDURE Init
		*Class that activates SQL thermometer bar during init
		*and restores altered settings during destroy.

		WITH THIS

			.icOldSetTalk = SET("TALK")
			SET TALK OFF

			.icOldOutputWindow = SET("TALK",1)

			.icNewOutputWindow = "SQLThermo"+SYS(2015)
			LOCAL m.lcNewOutputWindow
			m.lcNewOutputWindow = .icNewOutputWindow
			DEFINE WINDOW &lcNewOutputWindow. FROM -1000,-1000 TO -500,-500
			ACTIVATE WINDOW &lcNewOutputWindow. IN SCREEN

			SET TALK WINDOW &lcNewOutputWindow.
			IF VERSION(5)>=700
				.icOldSetNotify = SET("NOTIFY")
				SET NOTIFY ON
			ENDIF
		ENDWITH

		SET TALK ON

		RETURN .T.
	ENDPROC


ENDDEFINE
*
*-- EndDefine: cussqlthermo
**************************************************
Register to rate this FAQ  : BAD 1 2 3 4 5 6 7 8 9 10 GOOD
Please Note: 1 is Bad, 10 is Good :-)

Part and Inventory Search

Back
Top