Changeset: 237 fdbozzo - 07/05/2014 20:47:21:
- Agregado soporte de evaluación de propiedades desde archivo externo (props_*.txt) - Agregado soporte de evaluación de propiedades por clase - La propiedad Picture de una clase form se pierde y no muestra la imagen. No ocurre con la propiedad Picture de los controles (Fidel Charny) - Algunas opciones del optiongroup pierden el width cuando se subclasan de una clase con autosize=.T. (Miguel Duran)
This commit is contained in:
224
TESTS/DATOS_READONLY/fb2p_dbc.prg
Normal file
224
TESTS/DATOS_READONLY/fb2p_dbc.prg
Normal file
@@ -0,0 +1,224 @@
|
||||
* *********************************************************************
|
||||
* *
|
||||
* * 2013/12/09 FB2P_DBC.DBC 22:32:26
|
||||
* *
|
||||
* *********************************************************************
|
||||
* *
|
||||
* * Description:
|
||||
* * This program was automatically generated by GenDBCX Version 1.1,
|
||||
* * a modified version of Microsoft's utility GenDBC Version 2.26.67.
|
||||
* *
|
||||
* *********************************************************************
|
||||
|
||||
|
||||
LPARAMETERS tcMethod
|
||||
LOCAL oDBC
|
||||
oDBC = CreateObject('GenDBCX')
|
||||
IF TYPE('oDBC') != 'O'
|
||||
RETURN
|
||||
ENDIF
|
||||
cExactSet = SET('EXACT')
|
||||
SET EXACT ON
|
||||
IF EMPTY(tcMethod)
|
||||
=oDBC.GenerateAll()
|
||||
ELSE
|
||||
=EVALUATE('oDBC.' + tcMethod)
|
||||
ENDIF
|
||||
IF cExactSet = 'OFF'
|
||||
SET EXACT OFF
|
||||
ENDIF
|
||||
|
||||
|
||||
DEFINE CLASS GenDBCX AS Custom
|
||||
PROTECTED aTables[1]
|
||||
PROTECTED nTables
|
||||
|
||||
PROCEDURE CustomProcess
|
||||
*-- Your code goes here
|
||||
ENDPROC
|
||||
|
||||
PROCEDURE Init
|
||||
IF FILE('FB2P_DBC.DBC')
|
||||
OPEN DATABASE FB2P_DBC.DBC
|
||||
this.nTables = ADBOBJECTS(this.aTables, 'Table')
|
||||
ENDIF
|
||||
LOCAL ARRAY xx[1]
|
||||
IF ADIR(xx,'*.DBC') > 0 OR ADIR(xx,'*.DBF') > 0
|
||||
IF MessageBox('Warning! This program will overwrite your existing database and tables! Continue?', 308, 'GenDBCX Warning...') != 6
|
||||
RETURN .F.
|
||||
ENDIF
|
||||
ENDIF
|
||||
ENDPROC
|
||||
|
||||
PROCEDURE CreateDBC
|
||||
*-- Create the Database Container
|
||||
CLOSE DATA ALL
|
||||
CREATE DATABASE 'FB2P_DBC.DBC'
|
||||
|
||||
********* Procedure Re-Creation *********
|
||||
IF !FILE([FB2P_DBC.krt])
|
||||
? [Warning! No Procedure File Found!]
|
||||
ELSE
|
||||
CLOSE DATABASE
|
||||
USE 'FB2P_DBC.DBC'
|
||||
g_SetSafety = SET('SAFETY')
|
||||
SET SAFETY OFF
|
||||
LOCATE FOR Objectname = 'StoredProceduresSource'
|
||||
IF FOUND()
|
||||
APPEND MEMO Code FROM [FB2P_DBC.krt] OVERWRITE
|
||||
REPLACE Code WITH SUBSTR(Code, 70, 13140)
|
||||
ENDIF
|
||||
LOCATE FOR Objectname = 'StoredProceduresObject'
|
||||
IF FOUND()
|
||||
APPEND MEMO Code FROM [FB2P_DBC.krt] OVERWRITE
|
||||
REPLACE Code WITH SUBSTR(Code, 13210)
|
||||
ENDIF
|
||||
IF UPPER(g_SetSafety) = 'ON'
|
||||
SET SAFETY ON
|
||||
ENDIF
|
||||
USE
|
||||
OPEN DATABASE [FB2P_DBC.DBC]
|
||||
ENDIF
|
||||
|
||||
ENDPROC
|
||||
|
||||
|
||||
**************************************************
|
||||
** Table setup for NOMBRELARGODELDBF
|
||||
**************************************************
|
||||
PROCEDURE tbNOMBRELARGODELDBF
|
||||
LPARAMETERS tnPassNumber
|
||||
|
||||
DO CASE
|
||||
CASE tnPassNumber = 1
|
||||
=this.RemoveTable('NOMBRELARGODELDBF', 'C:\DESA\FOXBIN2PRG\TESTS\DATOS_READONLY\FB2P_DBF.DBF')
|
||||
|
||||
CREATE TABLE 'FB2P_DBF.DBF' NAME 'NOMBRELARGODELDBF' ( ;
|
||||
NOMBRE C(30) NOT NULL CHECK .NOT.EMPTY(nombre) ERROR "El nombre est<73> vac<61>o" DEFAULT ".", ;
|
||||
EDAD N(3, 0) NOT NULL, ;
|
||||
ID I NOT NULL, ;
|
||||
BIGTEXT M NOT NULL, ;
|
||||
DEPTO C(10) NOT NULL ;
|
||||
)
|
||||
***** Create each index for NOMBRELARGODELDBF *****
|
||||
SET COLLATE TO 'MACHINE'
|
||||
ALTER TABLE 'NOMBRELARGODELDBF' ADD PRIMARY KEY ID TAG ID
|
||||
SET COLLATE TO 'GENERAL'
|
||||
INDEX ON NOMBRE TAG I_NOMBRE
|
||||
SET COLLATE TO 'MACHINE'
|
||||
INDEX ON DEPTO TAG DEPTO
|
||||
|
||||
CASE tnPassNumber = 2
|
||||
***** Change properties for NOMBRELARGODELDBF *****
|
||||
DBSetProp('NOMBRELARGODELDBF.NOMBRE', 'Field', 'Caption', "'Nombre:'")
|
||||
DBSetProp('NOMBRELARGODELDBF.NOMBRE', 'Field', 'Comment', "Comentario de 'Nombre'")
|
||||
DBSetProp('NOMBRELARGODELDBF.NOMBRE', 'Field', 'InputMask', "!XXXXXXXXXXXXXXXXXXXXXXXXXXXXX")
|
||||
DBSetProp('NOMBRELARGODELDBF.NOMBRE', 'Field', 'Format', "A")
|
||||
DBSetProp('NOMBRELARGODELDBF', 'Table', 'Comment', "Comentario de la tabla 'fb2p_dbf'")
|
||||
CREATE TRIGGER ON 'NOMBRELARGODELDBF' FOR DELETE AS del_trg()
|
||||
CREATE TRIGGER ON 'NOMBRELARGODELDBF' FOR INSERT AS __ri_insert_nombrelargodeldbf().AND.(ins_trg())
|
||||
CREATE TRIGGER ON 'NOMBRELARGODELDBF' FOR UPDATE AS __ri_update_nombrelargodeldbf().AND.(upd_trg())
|
||||
ALTER TABLE 'NOMBRELARGODELDBF' SET CHECK edad>10 ERROR "Mensaje de error de la regla edad > 10"
|
||||
ENDCASE
|
||||
ENDPROC
|
||||
|
||||
|
||||
**************************************************
|
||||
** Table setup for FB2P_DEPTO
|
||||
**************************************************
|
||||
PROCEDURE tbFB2P_DEPTO
|
||||
LPARAMETERS tnPassNumber
|
||||
|
||||
DO CASE
|
||||
CASE tnPassNumber = 1
|
||||
=this.RemoveTable('FB2P_DEPTO', 'C:\DESA\FOXBIN2PRG\TESTS\DATOS_READONLY\FB2P_DEPTO.DBF')
|
||||
|
||||
CREATE TABLE 'FB2P_DEPTO.DBF' NAME 'FB2P_DEPTO' ( ;
|
||||
DEPTO C(10) NOT NULL, ;
|
||||
DESCRIP C(50) NOT NULL ;
|
||||
)
|
||||
***** Create each index for FB2P_DEPTO *****
|
||||
SET COLLATE TO 'MACHINE'
|
||||
ALTER TABLE 'FB2P_DEPTO' ADD PRIMARY KEY DEPTO TAG DEPTO
|
||||
|
||||
CASE tnPassNumber = 2
|
||||
***** Change properties for FB2P_DEPTO *****
|
||||
DBSetProp('FB2P_DEPTO', 'Table', 'Comment', "Comentario de 'fb2p_depto'")
|
||||
CREATE TRIGGER ON 'FB2P_DEPTO' FOR DELETE AS __ri_delete_fb2p_depto()
|
||||
ENDCASE
|
||||
ENDPROC
|
||||
|
||||
|
||||
***** Relations Setup *****
|
||||
PROCEDURE SetRelations
|
||||
ALTER TABLE 'NOMBRELARGODELDBF' ADD FOREIGN KEY TAG DEPTO REFERENCES FB2P_DEPTO TAG DEPTO
|
||||
ENDPROC
|
||||
|
||||
***** Referential Integrity Setup *****
|
||||
PROCEDURE SetRI
|
||||
CLOSE DATABASE
|
||||
USE 'FB2P_DBC.DBC'
|
||||
LOCATE FOR ObjectType = 'Table' AND UPPER(ALLTRIM(ObjectName)) == 'NOMBRELARGODELDBF'
|
||||
IF FOUND()
|
||||
nObjectID = ObjectID
|
||||
LOCATE FOR ObjectType = 'Relation' AND 'depto'$Property AND 'fb2p_depto'$Property AND 'depto'$Property AND ParentID = nObjectID
|
||||
IF FOUND()
|
||||
REPLACE RiInfo WITH 'ICR '
|
||||
ELSE
|
||||
? "Could not set RI Information, line " + ltrim(str(lineno()))
|
||||
ENDIF
|
||||
ENDIF
|
||||
USE
|
||||
ENDPROC
|
||||
|
||||
FUNCTION RemoveTable(tcTable, tcFile)
|
||||
LOCAL ARRAY laTables[1]
|
||||
=ADBOBJECTS(laTables,'Table')
|
||||
IF ASCAN(laTables,tcTable) = 0
|
||||
*-- No such table in the current dbc, nothing to do!
|
||||
RETURN .t.
|
||||
ENDIF
|
||||
IF !FILE(tcFile)
|
||||
*-- If the file has been erased, REMOVE TABLE fails with a 'File does not
|
||||
*-- exist' error, because it can't find the file to either remove its
|
||||
*-- database reference or delete the file .
|
||||
*-- We'll work around this problem by creating a phony file with the same
|
||||
*-- name, and use REMOVE TABLE DELETE to both remove the table reference
|
||||
*-- in the dbc, and erase the phony file.
|
||||
LOCAL lhFile
|
||||
lhFile = FCREATE(tcFile)
|
||||
IF lhFile = -1
|
||||
RETURN .f.
|
||||
ENDIF
|
||||
=FCLOSE(lhFile)
|
||||
ENDIF
|
||||
REMOVE TABLE (tcTable) DELETE
|
||||
=ADBOBJECTS(laTables,'Table')
|
||||
RETURN ASCAN(laTables,tcTable) = 0
|
||||
ENDFUNC
|
||||
|
||||
|
||||
PROCEDURE GenerateAll
|
||||
=this.CreateDBC()
|
||||
=this.CreateTables()
|
||||
|
||||
*-- Call custom method
|
||||
=this.CustomProcess()
|
||||
|
||||
=this.RulesTriggersProperties()
|
||||
=this.SetRelations()
|
||||
=this.SetRI()
|
||||
ENDPROC
|
||||
|
||||
PROCEDURE CreateTables
|
||||
*-- Create Tables
|
||||
=this.tbNOMBRELARGODELDBF(1)
|
||||
=this.tbFB2P_DEPTO(1)
|
||||
ENDPROC
|
||||
|
||||
PROCEDURE RulesTriggersProperties
|
||||
*-- Finish Tables (add rules/triggers/properties)
|
||||
=this.tbNOMBRELARGODELDBF(2)
|
||||
=this.tbFB2P_DEPTO(2)
|
||||
ENDPROC
|
||||
ENDDEFINE
|
||||
Reference in New Issue
Block a user