>>#ifndef TRUE >> #define TRUE .t. >> #define FALSE .f. >>#endif >>#define PREXIXED TRUE && if fieldnames like emp_cLast_Updated_User >>#define USERFIELDNAME 'cLast_Updated_User' >>#define DATETIMEFIELD 'tLast_Updated_Date' >> >>function RecordValidationRuleUpdateUserAndTime() >> >> local UpdateFieldUser, UpdateFieldDateTime, fs, i >> >>#if PREXIXED >> UpdateFieldUser = left(Field(1), at('_', Field(1))) + upper(USERFIELDNAME) >> UpdateFieldDateTime = left(Field(1), at('_', Field(1))) + upper(DATETIMEFIELD) >>#else >> UpdateFieldUser = upper(USERFIELDNAME) >> UpdateFieldDateTime = upper(DATETIMEFIELD) >>#endif >> >> do case >> case isnull(oldval(m.UpdateFieldUser)) >> && insert >> repl (m.UpdateFieldUser) with sys(0), (m.UpdateFieldDateTime) with datetime() >> >> otherwise >> && update >> fs = getfldstate(-1) >> >> for i = 2 to len(m.fs) >> >> do case >> case inlist(substr(m.fs, m.i, 1), '1', '3') >> && not changed >> >> case !FieldChanged(Field(m.i-1)) >> && not changed >> >> case inlist(Field(m.i-1), m.UpdateFieldUser, m.UpdateFieldDateTime) >> && ignore >> >> otherwise >> repl (m.UpdateFieldUser) with sys(0), (m.UpdateFieldDateTime) with datetime() >> exit >> endcase >> endfor >> endcase >>endfunc >>*-------------------------------------------------------------------------- >>function FieldChanged(FieldName) >> >> do case >> case isnull(oldval(m.FieldName)) or Isnull(eval(m.FieldName)) >> return (isnull(oldval(m.FieldName)) <> Isnull(eval(m.FieldName)) ) >> otherwise >> return (oldval(m.FieldName) <> eval(m.FieldName)) >> endcase >>endfunc >>*------------------------------------------------------------------------- >>>>
>>function LastUserAlterTable() >> >> local i, aa[1], TableName >> >> local UpdateFieldUser, UpdateFieldDateTime >> >> local TableValidationRule, TableValidationText >> >> local RuleName >> Rulename = 'RecordValidationRuleUpdateUserAndTime()' >> >> for i = 1 to adbobjects(aa, 'Table') >> >> TableName = aa[m.i] >> use (m.TableName) again in 0 excl >> >> select (m.TableName) >>#if PREXIXED >> UpdateFieldUser = left(Field(1), at('_', Field(1))) + upper(USERFIELDNAME) >> UpdateFieldDateTime = left(Field(1), at('_', Field(1))) + upper(DATETIMEFIELD) >>#else >> UpdateFieldUser = upper(USERFIELDNAME) >> UpdateFieldDateTime = upper(DATETIMEFIELD) >>#endif >> do case >> case type(m.UpdateFieldUser)<> T_UNDEFINED >> >> otherwise >> alter table (m.TableName) ; >> add (m.UpdateFieldUser) c(20) not null default '' ; >> add (m.UpdateFieldDateTime) T not null default { :} ; >> NOVALIDATE >> >> endcase >> >> TableValidationRule = dbgetprop(m.TableName, 'Table', 'RuleExpression') >> TableValidationText = dbgetprop(m.TableName, 'Table', 'RuleText') >> >> do case >> case !empty(atc(m.RuleName, m.TableValidationText)) >> && already in >> >> otherwise >> >> if( empty(m.TableValidationRule) ) >> TableValidationRule = m.RuleName >> else >> TableValidationRule = m.TableValidationRule + ' and ' + m.RuleName >> >> endif >> >> if( !empty(m.TableValidationText) ) >> TableValidationText = 'error ' + m.TableValidationText >> endif >> >> alter table (m.TableName) ; >> set check &TableValidationRule &TableValidationText ; >> NOVALIDATE >> >> endcase >> >> use in (m.TableName) >> >> endfor >> >>endfunc >>*-------------------------------------------------------------------------- >>>