IntegerFelderAufNullSetzen.p 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. /* Suchen aller Felder mit Datentyp INTEGER */
  2. /* Wenn Inhalt ? ist -> dann auf 0 setzen */
  3. DEFINE VARIABLE cFiles AS CHARACTER NO-UNDO.
  4. DEFINE VARIABLE cFile AS CHARACTER NO-UNDO.
  5. DEFINE VARIABLE cFelder AS CHARACTER NO-UNDO.
  6. DEFINE VARIABLE cFeld AS CHARACTER NO-UNDO.
  7. DEFINE VARIABLE ii AS INTEGER NO-UNDO.
  8. DEFINE VARIABLE i1 AS INTEGER NO-UNDO.
  9. DEFINE VARIABLE hFeld AS HANDLE NO-UNDO.
  10. DEFINE VARIABLE iAnz AS INTEGER NO-UNDO.
  11. DEFINE VARIABLE hbFile AS HANDLE NO-UNDO.
  12. DEFINE VARIABLE hQuery AS HANDLE NO-UNDO.
  13. DEFINE VARIABLE lError AS LOGICAL NO-UNDO.
  14. DEFINE TEMP-TABLE tMutation
  15. FIELD cFile AS CHARACTER
  16. FIELD cFeld AS CHARACTER
  17. FIELD lError AS LOGICAL
  18. .
  19. FOR EACH _File NO-LOCK
  20. WHERE NOT _File._File-Name BEGINS 'SYS'
  21. AND NOT _File._File-Name BEGINS '_'
  22. BY _File._File-Name :
  23. cFiles = cFiles
  24. + (IF cFiles = '' THEN '' ELSE ',')
  25. + _File._File-Name.
  26. END.
  27. MESSAGE cFiles VIEW-AS ALERT-BOX.
  28. DO i1 = 1 TO NUM-ENTRIES(cFiles, ','):
  29. cFile = ENTRY(i1, cFiles, ',').
  30. CREATE BUFFER hbFile FOR TABLE cFile.
  31. cFelder = ''.
  32. CREATE QUERY hQuery.
  33. hQuery:SET-BUFFERS(hbFile).
  34. hQuery:QUERY-PREPARE(SUBSTITUTE('FOR EACH &1 ', cFile)).
  35. hQuery:QUERY-OPEN().
  36. hQuery:GET-FIRST().
  37. DO ii = 1 TO hbFile:NUM-FIELDS:
  38. hFeld = hbFile:BUFFER-FIELD(ii) NO-ERROR.
  39. IF hFeld:EXTENT > 0 THEN NEXT.
  40. IF hFeld:DATA-TYPE <> 'INTEGER' THEN NEXT.
  41. cFelder = cFelder
  42. + (IF cFelder = '' THEN '' ELSE ',')
  43. + hFeld:NAME.
  44. END.
  45. DO WHILE NOT hQuery:QUERY-OFF-END:
  46. DO TRANSACTION:
  47. hQuery:GET-CURRENT ( EXCLUSIVE-LOCK ).
  48. DO ii = 1 TO NUM-ENTRIES(cFelder, ','):
  49. cFeld = ENTRY(ii, cFelder, ',').
  50. hFeld = hbFile:BUFFER-FIELD(cFeld) NO-ERROR.
  51. IF hFeld:BUFFER-VALUE <> ? THEN NEXT.
  52. hFeld:BUFFER-VALUE = 0 NO-ERROR.
  53. lError = ERROR-STATUS:ERROR.
  54. CREATE tMutation.
  55. ASSIGN
  56. tMutation.cFile = cFile
  57. tMutation.cFeld = cFeld
  58. tMutation.lError = lError.
  59. END.
  60. END.
  61. hQuery:GET-NEXT().
  62. END.
  63. hQuery:QUERY-CLOSE().
  64. DELETE OBJECT hQuery.
  65. DELETE OBJECT hbFile.
  66. END.
  67. OUTPUT TO 'C:\Entwicklung\TEMP\IntegerTo0.log' NO-MAP NO-CONVERT.
  68. FOR EACH tMutation:
  69. EXPORT DELIMITER ';' tMutation.
  70. END.
  71. OUTPUT CLOSE.