/* Suchen aller Felder mit Datentyp INTEGER */ /* Wenn Inhalt ? ist -> dann auf 0 setzen */ DEFINE VARIABLE cFiles AS CHARACTER NO-UNDO. DEFINE VARIABLE cFile AS CHARACTER NO-UNDO. DEFINE VARIABLE cFelder AS CHARACTER NO-UNDO. DEFINE VARIABLE cFeld AS CHARACTER NO-UNDO. DEFINE VARIABLE ii AS INTEGER NO-UNDO. DEFINE VARIABLE i1 AS INTEGER NO-UNDO. DEFINE VARIABLE hFeld AS HANDLE NO-UNDO. DEFINE VARIABLE iAnz AS INTEGER NO-UNDO. DEFINE VARIABLE hbFile AS HANDLE NO-UNDO. DEFINE VARIABLE hQuery AS HANDLE NO-UNDO. DEFINE VARIABLE lError AS LOGICAL NO-UNDO. DEFINE TEMP-TABLE tMutation FIELD cFile AS CHARACTER FIELD cFeld AS CHARACTER FIELD lError AS LOGICAL . FOR EACH _File NO-LOCK WHERE NOT _File._File-Name BEGINS 'SYS' AND NOT _File._File-Name BEGINS '_' BY _File._File-Name : cFiles = cFiles + (IF cFiles = '' THEN '' ELSE ',') + _File._File-Name. END. MESSAGE cFiles VIEW-AS ALERT-BOX. DO i1 = 1 TO NUM-ENTRIES(cFiles, ','): cFile = ENTRY(i1, cFiles, ','). CREATE BUFFER hbFile FOR TABLE cFile. cFelder = ''. CREATE QUERY hQuery. hQuery:SET-BUFFERS(hbFile). hQuery:QUERY-PREPARE(SUBSTITUTE('FOR EACH &1 ', cFile)). hQuery:QUERY-OPEN(). hQuery:GET-FIRST(). DO ii = 1 TO hbFile:NUM-FIELDS: hFeld = hbFile:BUFFER-FIELD(ii) NO-ERROR. IF hFeld:EXTENT > 0 THEN NEXT. IF hFeld:DATA-TYPE <> 'INTEGER' THEN NEXT. cFelder = cFelder + (IF cFelder = '' THEN '' ELSE ',') + hFeld:NAME. END. DO WHILE NOT hQuery:QUERY-OFF-END: DO TRANSACTION: hQuery:GET-CURRENT ( EXCLUSIVE-LOCK ). DO ii = 1 TO NUM-ENTRIES(cFelder, ','): cFeld = ENTRY(ii, cFelder, ','). hFeld = hbFile:BUFFER-FIELD(cFeld) NO-ERROR. IF hFeld:BUFFER-VALUE <> ? THEN NEXT. hFeld:BUFFER-VALUE = 0 NO-ERROR. lError = ERROR-STATUS:ERROR. CREATE tMutation. ASSIGN tMutation.cFile = cFile tMutation.cFeld = cFeld tMutation.lError = lError. END. END. hQuery:GET-NEXT(). END. hQuery:QUERY-CLOSE(). DELETE OBJECT hQuery. DELETE OBJECT hbFile. END. OUTPUT TO 'C:\Entwicklung\TEMP\IntegerTo0.log' NO-MAP NO-CONVERT. FOR EACH tMutation: EXPORT DELIMITER ';' tMutation. END. OUTPUT CLOSE.