|
| 1 | +* ********************************************************************* |
| 2 | +* * |
| 3 | +* * 2013/12/09 FB2P_DBC.DBC 22:32:26 |
| 4 | +* * |
| 5 | +* ********************************************************************* |
| 6 | +* * |
| 7 | +* * Description: |
| 8 | +* * This program was automatically generated by GenDBCX Version 1.1, |
| 9 | +* * a modified version of Microsoft's utility GenDBC Version 2.26.67. |
| 10 | +* * |
| 11 | +* ********************************************************************* |
| 12 | + |
| 13 | + |
| 14 | +LPARAMETERS tcMethod |
| 15 | +LOCAL oDBC |
| 16 | +oDBC = CreateObject('GenDBCX') |
| 17 | +IF TYPE('oDBC') != 'O' |
| 18 | + RETURN |
| 19 | +ENDIF |
| 20 | +cExactSet = SET('EXACT') |
| 21 | +SET EXACT ON |
| 22 | +IF EMPTY(tcMethod) |
| 23 | + =oDBC.GenerateAll() |
| 24 | +ELSE |
| 25 | + =EVALUATE('oDBC.' + tcMethod) |
| 26 | +ENDIF |
| 27 | +IF cExactSet = 'OFF' |
| 28 | + SET EXACT OFF |
| 29 | +ENDIF |
| 30 | + |
| 31 | + |
| 32 | +DEFINE CLASS GenDBCX AS Custom |
| 33 | + PROTECTED aTables[1] |
| 34 | + PROTECTED nTables |
| 35 | + |
| 36 | + PROCEDURE CustomProcess |
| 37 | + *-- Your code goes here |
| 38 | + ENDPROC |
| 39 | + |
| 40 | + PROCEDURE Init |
| 41 | + IF FILE('FB2P_DBC.DBC') |
| 42 | + OPEN DATABASE FB2P_DBC.DBC |
| 43 | + this.nTables = ADBOBJECTS(this.aTables, 'Table') |
| 44 | + ENDIF |
| 45 | + LOCAL ARRAY xx[1] |
| 46 | + IF ADIR(xx,'*.DBC') > 0 OR ADIR(xx,'*.DBF') > 0 |
| 47 | + IF MessageBox('Warning! This program will overwrite your existing database and tables! Continue?', 308, 'GenDBCX Warning...') != 6 |
| 48 | + RETURN .F. |
| 49 | + ENDIF |
| 50 | + ENDIF |
| 51 | + ENDPROC |
| 52 | + |
| 53 | + PROCEDURE CreateDBC |
| 54 | + *-- Create the Database Container |
| 55 | + CLOSE DATA ALL |
| 56 | + CREATE DATABASE 'FB2P_DBC.DBC' |
| 57 | + |
| 58 | + ********* Procedure Re-Creation ********* |
| 59 | + IF !FILE([FB2P_DBC.krt]) |
| 60 | + ? [Warning! No Procedure File Found!] |
| 61 | + ELSE |
| 62 | + CLOSE DATABASE |
| 63 | + USE 'FB2P_DBC.DBC' |
| 64 | + g_SetSafety = SET('SAFETY') |
| 65 | + SET SAFETY OFF |
| 66 | + LOCATE FOR Objectname = 'StoredProceduresSource' |
| 67 | + IF FOUND() |
| 68 | + APPEND MEMO Code FROM [FB2P_DBC.krt] OVERWRITE |
| 69 | + REPLACE Code WITH SUBSTR(Code, 70, 13140) |
| 70 | + ENDIF |
| 71 | + LOCATE FOR Objectname = 'StoredProceduresObject' |
| 72 | + IF FOUND() |
| 73 | + APPEND MEMO Code FROM [FB2P_DBC.krt] OVERWRITE |
| 74 | + REPLACE Code WITH SUBSTR(Code, 13210) |
| 75 | + ENDIF |
| 76 | + IF UPPER(g_SetSafety) = 'ON' |
| 77 | + SET SAFETY ON |
| 78 | + ENDIF |
| 79 | + USE |
| 80 | + OPEN DATABASE [FB2P_DBC.DBC] |
| 81 | + ENDIF |
| 82 | + |
| 83 | + ENDPROC |
| 84 | + |
| 85 | + |
| 86 | + ************************************************** |
| 87 | + ** Table setup for NOMBRELARGODELDBF |
| 88 | + ************************************************** |
| 89 | + PROCEDURE tbNOMBRELARGODELDBF |
| 90 | + LPARAMETERS tnPassNumber |
| 91 | + |
| 92 | + DO CASE |
| 93 | + CASE tnPassNumber = 1 |
| 94 | + =this.RemoveTable('NOMBRELARGODELDBF', 'C:\DESA\FOXBIN2PRG\TESTS\DATOS_READONLY\FB2P_DBF.DBF') |
| 95 | + |
| 96 | + CREATE TABLE 'FB2P_DBF.DBF' NAME 'NOMBRELARGODELDBF' ( ; |
| 97 | + NOMBRE C(30) NOT NULL CHECK .NOT.EMPTY(nombre) ERROR "El nombre está vacío" DEFAULT ".", ; |
| 98 | + EDAD N(3, 0) NOT NULL, ; |
| 99 | + ID I NOT NULL, ; |
| 100 | + BIGTEXT M NOT NULL, ; |
| 101 | + DEPTO C(10) NOT NULL ; |
| 102 | + ) |
| 103 | + ***** Create each index for NOMBRELARGODELDBF ***** |
| 104 | + SET COLLATE TO 'MACHINE' |
| 105 | + ALTER TABLE 'NOMBRELARGODELDBF' ADD PRIMARY KEY ID TAG ID |
| 106 | + SET COLLATE TO 'GENERAL' |
| 107 | + INDEX ON NOMBRE TAG I_NOMBRE |
| 108 | + SET COLLATE TO 'MACHINE' |
| 109 | + INDEX ON DEPTO TAG DEPTO |
| 110 | + |
| 111 | + CASE tnPassNumber = 2 |
| 112 | + ***** Change properties for NOMBRELARGODELDBF ***** |
| 113 | + DBSetProp('NOMBRELARGODELDBF.NOMBRE', 'Field', 'Caption', "'Nombre:'") |
| 114 | + DBSetProp('NOMBRELARGODELDBF.NOMBRE', 'Field', 'Comment', "Comentario de 'Nombre'") |
| 115 | + DBSetProp('NOMBRELARGODELDBF.NOMBRE', 'Field', 'InputMask', "!XXXXXXXXXXXXXXXXXXXXXXXXXXXXX") |
| 116 | + DBSetProp('NOMBRELARGODELDBF.NOMBRE', 'Field', 'Format', "A") |
| 117 | + DBSetProp('NOMBRELARGODELDBF', 'Table', 'Comment', "Comentario de la tabla 'fb2p_dbf'") |
| 118 | + CREATE TRIGGER ON 'NOMBRELARGODELDBF' FOR DELETE AS del_trg() |
| 119 | + CREATE TRIGGER ON 'NOMBRELARGODELDBF' FOR INSERT AS __ri_insert_nombrelargodeldbf().AND.(ins_trg()) |
| 120 | + CREATE TRIGGER ON 'NOMBRELARGODELDBF' FOR UPDATE AS __ri_update_nombrelargodeldbf().AND.(upd_trg()) |
| 121 | + ALTER TABLE 'NOMBRELARGODELDBF' SET CHECK edad>10 ERROR "Mensaje de error de la regla edad > 10" |
| 122 | + ENDCASE |
| 123 | + ENDPROC |
| 124 | + |
| 125 | + |
| 126 | + ************************************************** |
| 127 | + ** Table setup for FB2P_DEPTO |
| 128 | + ************************************************** |
| 129 | + PROCEDURE tbFB2P_DEPTO |
| 130 | + LPARAMETERS tnPassNumber |
| 131 | + |
| 132 | + DO CASE |
| 133 | + CASE tnPassNumber = 1 |
| 134 | + =this.RemoveTable('FB2P_DEPTO', 'C:\DESA\FOXBIN2PRG\TESTS\DATOS_READONLY\FB2P_DEPTO.DBF') |
| 135 | + |
| 136 | + CREATE TABLE 'FB2P_DEPTO.DBF' NAME 'FB2P_DEPTO' ( ; |
| 137 | + DEPTO C(10) NOT NULL, ; |
| 138 | + DESCRIP C(50) NOT NULL ; |
| 139 | + ) |
| 140 | + ***** Create each index for FB2P_DEPTO ***** |
| 141 | + SET COLLATE TO 'MACHINE' |
| 142 | + ALTER TABLE 'FB2P_DEPTO' ADD PRIMARY KEY DEPTO TAG DEPTO |
| 143 | + |
| 144 | + CASE tnPassNumber = 2 |
| 145 | + ***** Change properties for FB2P_DEPTO ***** |
| 146 | + DBSetProp('FB2P_DEPTO', 'Table', 'Comment', "Comentario de 'fb2p_depto'") |
| 147 | + CREATE TRIGGER ON 'FB2P_DEPTO' FOR DELETE AS __ri_delete_fb2p_depto() |
| 148 | + ENDCASE |
| 149 | + ENDPROC |
| 150 | + |
| 151 | + |
| 152 | + ***** Relations Setup ***** |
| 153 | + PROCEDURE SetRelations |
| 154 | + ALTER TABLE 'NOMBRELARGODELDBF' ADD FOREIGN KEY TAG DEPTO REFERENCES FB2P_DEPTO TAG DEPTO |
| 155 | + ENDPROC |
| 156 | + |
| 157 | + ***** Referential Integrity Setup ***** |
| 158 | + PROCEDURE SetRI |
| 159 | + CLOSE DATABASE |
| 160 | + USE 'FB2P_DBC.DBC' |
| 161 | + LOCATE FOR ObjectType = 'Table' AND UPPER(ALLTRIM(ObjectName)) == 'NOMBRELARGODELDBF' |
| 162 | + IF FOUND() |
| 163 | + nObjectID = ObjectID |
| 164 | + LOCATE FOR ObjectType = 'Relation' AND 'depto'$Property AND 'fb2p_depto'$Property AND 'depto'$Property AND ParentID = nObjectID |
| 165 | + IF FOUND() |
| 166 | + REPLACE RiInfo WITH 'ICR ' |
| 167 | + ELSE |
| 168 | + ? "Could not set RI Information, line " + ltrim(str(lineno())) |
| 169 | + ENDIF |
| 170 | + ENDIF |
| 171 | + USE |
| 172 | + ENDPROC |
| 173 | + |
| 174 | + FUNCTION RemoveTable(tcTable, tcFile) |
| 175 | + LOCAL ARRAY laTables[1] |
| 176 | + =ADBOBJECTS(laTables,'Table') |
| 177 | + IF ASCAN(laTables,tcTable) = 0 |
| 178 | + *-- No such table in the current dbc, nothing to do! |
| 179 | + RETURN .t. |
| 180 | + ENDIF |
| 181 | + IF !FILE(tcFile) |
| 182 | + *-- If the file has been erased, REMOVE TABLE fails with a 'File does not |
| 183 | + *-- exist' error, because it can't find the file to either remove its |
| 184 | + *-- database reference or delete the file . |
| 185 | + *-- We'll work around this problem by creating a phony file with the same |
| 186 | + *-- name, and use REMOVE TABLE DELETE to both remove the table reference |
| 187 | + *-- in the dbc, and erase the phony file. |
| 188 | + LOCAL lhFile |
| 189 | + lhFile = FCREATE(tcFile) |
| 190 | + IF lhFile = -1 |
| 191 | + RETURN .f. |
| 192 | + ENDIF |
| 193 | + =FCLOSE(lhFile) |
| 194 | + ENDIF |
| 195 | + REMOVE TABLE (tcTable) DELETE |
| 196 | + =ADBOBJECTS(laTables,'Table') |
| 197 | + RETURN ASCAN(laTables,tcTable) = 0 |
| 198 | + ENDFUNC |
| 199 | + |
| 200 | + |
| 201 | + PROCEDURE GenerateAll |
| 202 | + =this.CreateDBC() |
| 203 | + =this.CreateTables() |
| 204 | + |
| 205 | + *-- Call custom method |
| 206 | + =this.CustomProcess() |
| 207 | + |
| 208 | + =this.RulesTriggersProperties() |
| 209 | + =this.SetRelations() |
| 210 | + =this.SetRI() |
| 211 | + ENDPROC |
| 212 | + |
| 213 | + PROCEDURE CreateTables |
| 214 | + *-- Create Tables |
| 215 | + =this.tbNOMBRELARGODELDBF(1) |
| 216 | + =this.tbFB2P_DEPTO(1) |
| 217 | + ENDPROC |
| 218 | + |
| 219 | + PROCEDURE RulesTriggersProperties |
| 220 | + *-- Finish Tables (add rules/triggers/properties) |
| 221 | + =this.tbNOMBRELARGODELDBF(2) |
| 222 | + =this.tbFB2P_DEPTO(2) |
| 223 | + ENDPROC |
| 224 | +ENDDEFINE |
0 commit comments