Pesquisar campos em todas as tabelas de todos os bancos conectados para progress 102B ou superior.
/*
use this program to search for some field on your connected databases
Input Parameters:
<none>
Output Parameters:
<none>
Author:
jaison antoniazzi
jaison.antoniazzi@gmail.com
jaison@neostep.com.br
skype: jaison.antoniazzi
04/06/2014
*/
ASSIGN INPUT myfield.
DEFINE VARIABLE idbs AS INTEGER NO-UNDO.
DEFINE VARIABLE currentDB AS CHARACTER NO-UNDO.
DEFINE VARIABLE hqueryFile AS HANDLE NO-UNDO.
DEFINE VARIABLE hbufferFile AS HANDLE NO-UNDO.
DEFINE VARIABLE hbufferFIELD AS HANDLE NO-UNDO.
SESSION:SET-WAIT-STATE('general').
myresult:INSERT-STRING( FILL('=', 40) + CHR(10)).
myresult:INSERT-STRING( 'Searching field: ' + myfield + CHR(10)).
myresult:INSERT-STRING( FILL('=', 40) + CHR(10)).
REPEAT idbs = 1 TO NUM-DBS:
currentDB = LDBNAME(idbs).
CREATE BUFFER hbufferFILE FOR TABLE currentDB + "._file".
CREATE BUFFER hbufferFIELD FOR TABLE currentDB + "._field".
CREATE QUERY hqueryFILE.
hqueryFILE:SET-BUFFERS(hbufferFILE, hbufferFIELD).
hqueryFILE:QUERY-PREPARE(SUBSTITUTE
('FOR EACH _FILE WHERE _file._HIDDEN = FALSE, ' +
' EACH _field WHERE _field._file-recid = RECID(_FILE) ' +
' AND _field._field-name BEGINS "&1" ',
myfield) ).
hqueryFILE:QUERY-OPEN().
hqueryFILE:GET-FIRST().
DO WHILE NOT hqueryFILE:QUERY-OFF-END:
myresult:INSERT-STRING( hbufferFILE:BUFFER-FIELD("_file-name"):BUFFER-VALUE + "." +
hbufferFIELD:BUFFER-FIELD("_field-name"):BUFFER-VALUE +
CHR(10) ).
hqueryFILE:GET-NEXT().
END.
FINALLY:
DELETE OBJECT hqueryFILE NO-ERROR.
DELETE OBJECT hbufferFILE NO-ERROR.
END FINALLY.
END.
FINALLY:
SESSION:SET-WAIT-STATE('').
END FINALLY.