Level Extreme platform
Subscription
Corporate profile
Products & Services
Support
Legal
Français
Need a good method of printing table structures
Message
From
06/07/2005 05:20:43
 
 
To
05/07/2005 12:59:23
General information
Forum:
Visual FoxPro
Category:
Other
Environment versions
Visual FoxPro:
VFP 8 SP1
OS:
Windows 2000
Network:
Novell 6.x
Database:
Visual FoxPro
Miscellaneous
Thread ID:
01029054
Message ID:
01029358
Views:
11
>Greetings All
>I am looking for a means of printing table structures for tables. Display stru is rather crude to put it kindly. Is there not a better way?
>thanx, Vince
Here what I do:
* Program....:  LS.PRG
* Version....:
* Author.....: Peter A. Cortiel
* Date.......: 6/19/2002
* Notice.....: Copyright (c) 2002 ** PCS **, All Rights Reserved.
* Compiler...: Visual FoxPro 07.00.0000.9465 for Windows for Windows
* Abstract...:
* Changes....:


LPARAMETERS tcTableName AS CHARACTER,tlNotSorted AS Boolean,tcDelimiter,tlNoAuditFields

LOCAL lcOldSelect AS INTEGER,;
	lnNumFields,;
	lcTempFileName,;
	lcTableName,;
	I AS INTEGER
IF VERSION(5)>=900
	LOCAL oldrepset
	oldrepset=SET("ReportBehavior")
	SET REPORTBEHAVIOR 80
ENDIF
IF VARTYPE(tcDelimiter)="L"
	tcDelimiter=",;"
ENDIF

lcOldSelect =SELECT()

IF NOT VARTYPE(tcTableName )="C" AND NOT EMPTY(ALIAS())
	tcTableName =ALIAS()
ENDIF

DO CASE
	CASE   VARTYPE(tcTableName)="C"
		SELECT (tcTableName)
		lnNumFields=AFIELDS(la1)
		lnNumTags=ATAGINFO(la2)
		IF tlNotSorted
			ASORT(la1)
		ENDIF
		lcTempFileName=SYS(2015)
		lcTableName=DBF()

		CREATE CURSOR (lcTempFileName) (;
			fieldname 				C(250)		,;
			fieldtype 				C(1)		,;
			fieldwidth 				N(10,0)		,;
			fielddec 				N(10,0)		,;
			fieldNullsAllowed 		L			,;
			fieldCodePageAllowed 	L			,;
			fieldValid 				C(250)		,;
			fieldValidText 			C(250)		,;
			fieldDefault 			C(250)		,;
			tabValid				C(250)		,;
			tabValidText			C(250)		,;
			LongTableName 			C(250)		,;
			InsTrigg 				C(250)		,;
			UpdTrigg 				C(250)		,;
			DelTrigg 				C(250)		,;
			TabComment				C(250) 		,;
			NextAIValue				I			,;
			StepAIValue				I			,;
			IsIndex					L			,;
			IsPrimary				L			)

		SELECT (lcTempFileName)
		APPEND FROM ARRAY la1

		IF lnNumTags>0
			APPEND BLANK
			APPEND BLANK
			REPLACE  fieldname WITH 'TAGS:',fieldValid WITH "INDEXES:"
			FOR I= 1 TO lnNumTags
				APPEND BLANK
				REPLACE fieldname 	WITH 'TAG:',;
					fieldValid 		WITH PADR(la2[I,1],20),;
					fieldValidText 	WITH PADR(la2[i,2],20),;
					fieldDefault 	WITH PADR(la2[i,3],20),;
					tabValid 		WITH PADR(la2[i,4],20),;
					tabValidText	WITH la2[i,5]
			ENDFOR
		ENDIF


		rtn=""
		lcCnt=0
		SCAN
			lcCnt = lcCnt + 1

			IF NOT ":"$fieldname
				IF tlNoAuditFields
					IF NOT LOWER(ALLTRIM(fieldname ))$"insdttm insuser_id upddttm upduser_id"
						IF RECNO()=1
							rtn=ALLTRIM(fieldname )
						ELSE
							rtn=rtn+tcDelimiter+CHR(13)+CHR(10)+ALLTRIM(fieldname )
						ENDIF
					ENDIF
				ELSE
					IF RECNO()=1
						rtn=ALLTRIM(fieldname )
					ELSE
						rtn=rtn+tcDelimiter+CHR(13)+CHR(10)+ALLTRIM(fieldname )
					ENDIF
				ENDIF
				IF lcCnt<=lnNumFields
					cFn=UPPER(ALLTRIM(fieldname))
					IF lnNumTags>0
						x2=ASCAN(la2,cFn,1,-1,1, 8+1)
						IF x2>0
							cFN1=UPPER(la2(ASCAN(la2,cFn,1,-1,1, 8+1),1))
							IF UPPER(la2[x2,2])="PRIMARY"
								REPLACE IsPrimary WITH .T. IN (lcTempFileName)
							ELSE
								REPLACE IsPrimary WITH .F. IN (lcTempFileName)
							ENDIF
						ELSE
							cFN1="  "
						ENDIF
						REPLACE IsIndex WITH cFn=cFN1 IN (lcTempFileName)
					ENDIF
				ENDIF
			ENDIF

		ENDSCAN
		LOCATE
		REPORT FORM ls PREVIEW
		*BROWSE
		USE IN (lcTempFileName)
ENDCASE
SELECT (lcOldSelect )
_CLIPTEXT=rtn

IF VERSION(5)>=900
	SET REPORTBEHAVIOR (oldrepset)
ENDIF
if want he report I email it to you

Peter
Peter Cortiel
Previous
Next
Reply
Map
View

Click here to load this message in the networking platform