t-ansprech-delete.p 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121
  1. TRIGGER PROCEDURE FOR DELETE OF Ansprech.
  2. DEF VAR cDiff AS CHAR NO-UNDO.
  3. DEF VAR cFeld AS CHAR NO-UNDO.
  4. DEF VAR hBuffer AS HANDLE NO-UNDO.
  5. DEF VAR hFeld1 AS HANDLE NO-UNDO.
  6. DEF VAR kk AS INT NO-UNDO.
  7. DEF VAR cWort AS CHAR NO-UNDO.
  8. DEF VAR iArt AS INT NO-UNDO.
  9. DEF BUFFER bAnsprech FOR Ansprech.
  10. DEF TEMP-TABLE tAnsprech LIKE Ansprech.
  11. DISABLE TRIGGERS FOR LOAD OF Adresse.
  12. FIND Adresse
  13. WHERE Adresse.Firma = Ansprech.Firma
  14. AND Adresse.Knr = Ansprech.Knr.
  15. ASSIGN hBuffer = BUFFER Adresse:HANDLE
  16. cWort = ''
  17. Adresse.WortIndex = ''.
  18. DO kk = 1 TO hBuffer:NUM-FIELDS:
  19. hFeld1 = hBuffer:BUFFER-FIELD(kk).
  20. IF hFeld1:EXTENT > 0 THEN NEXT.
  21. IF NOT hFeld1:DATA-TYPE BEGINS 'CHAR' THEN NEXT.
  22. IF hFeld1:BUFFER-VALUE(0) = ? THEN hFeld1:BUFFER-VALUE(0) = ''.
  23. cFeld = hFeld1:NAME.
  24. IF cFeld BEGINS 'Erf' THEN NEXT.
  25. IF cFeld BEGINS 'Mut' THEN NEXT.
  26. IF cFeld BEGINS 'Anzeig' THEN NEXT.
  27. IF cFeld BEGINS 'Anschr' THEN NEXT.
  28. IF cFeld BEGINS 'Word' THEN NEXT.
  29. IF cFeld BEGINS 'Brief' THEN NEXT.
  30. IF cFeld BEGINS 'Cd' THEN NEXT.
  31. IF cFeld BEGINS 'Wort' THEN NEXT.
  32. iArt = 0.
  33. IF cFeld BEGINS 'Tel' THEN iArt = 1.
  34. IF cFeld BEGINS 'Nat' THEN iArt = 1.
  35. RUN BEREINIGEN ( iArt, hFeld1:BUFFER-VALUE(0) ).
  36. END.
  37. hFeld1 = hBuffer:BUFFER-FIELD('Knr').
  38. RUN BEREINIGEN ( 0, TRIM(STRING(INTEGER(hFeld1:BUFFER-VALUE(0)),'>>>>>>9')) ).
  39. EMPTY TEMP-TABLE tAnsprech.
  40. FOR EACH bAnsprech NO-LOCK
  41. WHERE bAnsprech.Firma = Ansprech.Firma
  42. AND bAnsprech.Knr = Ansprech.Knr
  43. AND bAnsprech.Ind <> Ansprech.Ind:
  44. CREATE tAnsprech.
  45. BUFFER-COPY bAnsprech to tAnsprech.
  46. END.
  47. hBuffer = TEMP-TABLE tAnsprech:DEFAULT-BUFFER-HANDLE.
  48. FOR EACH tAnsprech:
  49. DO kk = 1 TO hBuffer:NUM-FIELDS:
  50. hFeld1 = hBuffer:BUFFER-FIELD(kk).
  51. IF hFeld1:EXTENT > 0 THEN NEXT.
  52. IF NOT hFeld1:DATA-TYPE BEGINS 'CHAR' THEN NEXT.
  53. IF hFeld1:BUFFER-VALUE(0) = ? THEN hFeld1:BUFFER-VALUE(0) = ''.
  54. cFeld = hFeld1:NAME.
  55. IF cFeld BEGINS 'Anzeig' THEN NEXT.
  56. IF cFeld BEGINS 'Anschr' THEN NEXT.
  57. IF cFeld BEGINS 'Word' THEN NEXT.
  58. IF cFeld BEGINS 'Brief' THEN NEXT.
  59. IF cFeld BEGINS 'Cd' THEN NEXT.
  60. IF cFeld BEGINS 'Wort' THEN NEXT.
  61. iArt = 0.
  62. IF cFeld BEGINS 'Tel' THEN iArt = 1.
  63. IF cFeld BEGINS 'Nat' THEN iArt = 1.
  64. RUN BEREINIGEN ( iArt, hFeld1:BUFFER-VALUE(0) ).
  65. END.
  66. END.
  67. Adresse.WortIndex = cWort.
  68. RETURN.
  69. PROCEDURE BEREINIGEN:
  70. DEF INPUT PARAMETER ipArt AS INT NO-UNDO.
  71. DEF INPUT PARAMETER ipString AS CHAR NO-UNDO.
  72. DEF VAR wString AS CHAR NO-UNDO.
  73. DEF VAR yy AS INT NO-UNDO.
  74. IF ipString = '' THEN RETURN.
  75. wString = ipString.
  76. IF ipArt = 1 THEN DO:
  77. wString = REPLACE(wString, ' ', '').
  78. wString = REPLACE(wString, '.', '').
  79. wString = REPLACE(wString, '/', '').
  80. wString = REPLACE(wString, '-', '').
  81. END.
  82. wString = REPLACE(wString, '*' , '' ).
  83. wString = REPLACE(wString, '&' , ' ').
  84. wString = REPLACE(wString, '+' , '' ).
  85. wString = REPLACE(wString, '(' , '' ).
  86. wString = REPLACE(wString, ')' , '' ).
  87. wString = REPLACE(wString, '!' , '' ).
  88. wString = REPLACE(wString, '|' , '' ).
  89. wString = REPLACE(wString, '^' , '' ).
  90. wString = REPLACE(wString, ';' , '' ).
  91. wString = REPLACE(wString, "'" , '' ).
  92. wString = REPLACE(wString, ',' , '' ).
  93. wString = REPLACE(wString, ' ', ' ').
  94. wString = TRIM(wString).
  95. IF wString = '' THEN RETURN.
  96. IF LOOKUP(wString, cWort, ' ') > 0 THEN NEXT.
  97. cWort = cWort + (IF cWort = '' THEN '' ELSE ' ')
  98. + wString.
  99. END PROCEDURE.