PROGRAM Missing_CurrDorm; {-- *************************************************************************** -- ** Descr. : Some companies have standards that no data is physically deleted. -- ** They make a so called logical delete, setting a status flag on -- ** the record to inactive. This demo script loops through all record -- ** groups and tries to find statements that don't have checks for -- ** the status-flag. -- *************************************************************************** -- ** 17/12/01 1.001.00 Initial Creation, muellers@orcl-toolbox.com -- ***************************************************************************} var ps : TParamScreen; v_obj : longint; x : tparamboard; i,i2 : integer; frm : integer; plsql : string; ts : tstringlist; formsname : string; shortname : string; fname : string; s : string; ol : tstringlist; BEGIN ps := TParamScreen.create; x := ps.AddBoard('Analyze missing checks for current record groups',picOptions); x.addparam(parLabel,'MYLABEL','Please select the basepath of the modules that you wish to analyze for missing current/dormant queries:','',''); x.addparam(parPathname,'MYPATH','Basepath',extractfiledir(paramstr[0]),''); x.addparam(parLabel,'MYLABEL2','... and specify the filename for the results:','',''); x.addparam(parsaveFilename,'P_LOGSAVE','Log Filename','c:\miss_currdorm.txt',''); x.addparam(parLabel,'MYDBLAB','Connection to use:','',''); x.addparam(parDatabaseLogon,'MYDB','Database',{'keyowner/ty12@ty12'}'',''); if ps.ShowParamScreen('') then begin fname := ps.paramvalue('P_LOGSAVE'); deletefile(fname); ts := GetFileList(ps.paramvalue('MYPATH') ,'*.fmb', true); logadd('number of objects: '+inttostr(ts.count)); api_connect(ps.paramvalue('MYDB')); for i := 0 to ts.count-1 do begin try frm := api_loadmodule(ts.strings[i],false); shortname := rpad(extractfilename(ts.strings[i]),20); formsname := API_GetObjectName(frm); logadd(formsname+' ('+inttostr(i+1)+'/'+inttostr(ts.count)+')'); ol := API_getsubobjects(frm,D2FP_REC_GRP); for i2 := 0 to ol.count-1 do begin v_obj := ol.objects[i2]; plsql := generic_GetTextProp(v_obj,D2FP_REC_GRP_QRY); plsql := blendout_plsql_comments(plsql); s := API_GetObjectName(v_obj); if (pos('''C''',upper(plsql)) <=0) and (pos('''D''',upper(plsql)) <=0) and (generic_GetNumProp(v_obj,D2FP_REC_GRP_TYP) = D2FC_REGR_QUERY) and (s<>'DUMMY_LOV') then begin saveappendstring(shortname+formsname+'.recgrp.'+s+' [missing current/dormant in query!]'+c_cr,fname); end; end; api_destroymodule(frm); except logadd('Error loading '+ts.strings[i],logerror); end; end; api_disconnect; ts.free; host('notepad.exe '+fname,false); end else begin logadd('pressed cancelbutton on parameterscreen!'); end; ps.free; END.