buildAlleWortIndex.p 7.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189
  1. DEF VAR cDiff AS CHAR NO-UNDO.
  2. DEF VAR cFeld AS CHAR NO-UNDO.
  3. DEF VAR kk AS INT NO-UNDO.
  4. DEF VAR kx AS INT NO-UNDO.
  5. DEF VAR cWort AS CHAR NO-UNDO.
  6. DEF VAR hBuffer AS HANDLE NO-UNDO.
  7. DEF VAR hFeld1 AS HANDLE NO-UNDO.
  8. DEF VAR iArt AS INT NO-UNDO.
  9. DISABLE TRIGGERS FOR LOAD OF Artbez.
  10. DISABLE TRIGGERS FOR LOAD OF Artst.
  11. DISABLE TRIGGERS FOR LOAD OF ArtLief.
  12. DISABLE TRIGGERS FOR LOAD OF Adresse.
  13. FOR EACH Adresse:
  14. ASSIGN cWort = ''
  15. Adresse.WortIndex = ''.
  16. hBuffer = BUFFER Adresse:HANDLE.
  17. DO kk = 1 TO hBuffer:NUM-FIELDS:
  18. hFeld1 = hBuffer:BUFFER-FIELD(kk).
  19. IF hFeld1:EXTENT > 0 THEN NEXT.
  20. IF NOT hFeld1:DATA-TYPE BEGINS 'CHAR' THEN NEXT.
  21. cFeld = hFeld1:NAME.
  22. IF cFeld BEGINS 'Erf' THEN NEXT.
  23. IF cFeld BEGINS 'Mut' THEN NEXT.
  24. IF cFeld BEGINS 'Anzeig' THEN NEXT.
  25. IF cFeld BEGINS 'Anschr' THEN NEXT.
  26. IF cFeld BEGINS 'Word' THEN NEXT.
  27. IF cFeld BEGINS 'Brief' THEN NEXT.
  28. IF cFeld BEGINS 'Cd' THEN NEXT.
  29. IF cFeld BEGINS 'Wort' THEN NEXT.
  30. IF cFeld BEGINS 'Bem' THEN NEXT.
  31. IF cFeld = 'Firma' 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. FOR EACH Ansprech NO-LOCK
  40. WHERE Ansprech.Firma = Adresse.Firma
  41. AND Ansprech.Knr = Adresse.Knr :
  42. hBuffer = BUFFER Ansprech:HANDLE.
  43. DO kk = 1 TO hBuffer:NUM-FIELDS:
  44. hFeld1 = hBuffer:BUFFER-FIELD(kk).
  45. IF hFeld1:EXTENT > 0 THEN NEXT.
  46. IF NOT hFeld1:DATA-TYPE BEGINS 'CHAR' THEN NEXT.
  47. cFeld = hFeld1:NAME.
  48. IF cFeld BEGINS 'Erf' THEN NEXT.
  49. IF cFeld BEGINS 'Mut' THEN NEXT.
  50. IF cFeld BEGINS 'Anzeig' THEN NEXT.
  51. IF cFeld BEGINS 'Anschr' THEN NEXT.
  52. IF cFeld BEGINS 'Word' THEN NEXT.
  53. IF cFeld BEGINS 'Brief' THEN NEXT.
  54. IF cFeld BEGINS 'Cd' THEN NEXT.
  55. IF cFeld BEGINS 'Wort' THEN NEXT.
  56. IF cFeld BEGINS 'Bem' THEN NEXT.
  57. IF cFeld = 'Firma' THEN NEXT.
  58. iArt = 0.
  59. IF cFeld BEGINS 'Tel' THEN iArt = 1.
  60. IF cFeld BEGINS 'Nat' THEN iArt = 1.
  61. RUN BEREINIGEN ( iArt, hFeld1:BUFFER-VALUE(0) ).
  62. END.
  63. END.
  64. FOR EACH Steuer NO-LOCK
  65. WHERE Steuer.Firma < '9999'
  66. AND Steuer.AdFirma = Adresse.Firma:
  67. IF CAN-FIND ( Debst NO-LOCK USE-INDEX Debst-k1
  68. WHERE Debst.Firma = Steuer.Firma
  69. AND Debst.Knr = Adresse.Knr
  70. AND Debst.Aktiv)
  71. THEN DO:
  72. RUN BEREINIGEN ( 0, 'XDEBSTX' ).
  73. END.
  74. IF CAN-FIND ( Liefst NO-LOCK USE-INDEX Liefst-k1
  75. WHERE Liefst.Firma = Steuer.Firma
  76. AND Liefst.Knr = Adresse.Knr
  77. AND Liefst.Aktiv)
  78. THEN DO:
  79. RUN BEREINIGEN ( 0, 'XLIEFSTX' ).
  80. END.
  81. END.
  82. Adresse.WortIndex = cWort.
  83. END.
  84. FOR EACH Artst:
  85. cWort = ''.
  86. FIND Artbez USE-INDEX Artbez-k1
  87. WHERE Artbez.Firma = Artst.Firma
  88. AND Artbez.Artnr = Artst.Artnr
  89. AND Artbez.Inhalt = Artst.Inhalt
  90. AND Artbez.Jahr = Artst.Jahr
  91. AND Artbez.Sprcd = 1 EXCLUSIVE-LOCK NO-WAIT NO-ERROR.
  92. IF NOT AVAILABLE Artbez THEN NEXT.
  93. RUN BEREINIGEN ( 0, Artbez.Bez1 ).
  94. RUN BEREINIGEN ( 0, Artbez.Bez2 ).
  95. DO kk = 1 TO 10:
  96. cFeld = Artbez.Zustext[kk].
  97. IF cFeld = '' THEN NEXT.
  98. RUN BEREINIGEN ( 0, cFeld ).
  99. END.
  100. RUN BEREINIGEN ( 0, Artst.Suchbe ).
  101. RUN BEREINIGEN ( 0, Artst.Strichcode ).
  102. RUN BEREINIGEN ( 0, TRIM(STRING(Artst.Artnr,'>>>>>9')) ).
  103. IF Artst.Inhalt > 0 THEN RUN BEREINIGEN ( 0, 'Inhalt=' + TRIM(STRING(Artst.Inhalt,'>>>>>9')) ).
  104. IF Artst.Jahr > 0 THEN RUN BEREINIGEN ( 0, 'Jahr=' + TRIM(STRING(Artst.Jahr ,'>>>>>9')) ).
  105. IF Artst.FremdNr <> '' THEN DO:
  106. RUN BEREINIGEN ( 0, STRING(Artst.FremdNr,'XXXXXX XXXX XXXX')).
  107. RUN BEREINIGEN ( 0, TRIM(STRING(INTEGER(SUBSTRING(Artst.FremdNr,01,06)),'>>>>>9'))).
  108. END.
  109. FIND KGebinde NO-LOCK
  110. WHERE KGebinde.Firma = Artst.Firma
  111. AND KGebinde.Geb_Cd = Artst.KGeb_Cd NO-ERROR.
  112. IF AVAILABLE KGebinde THEN RUN BEREINIGEN ( 0, KGebinde.KBez ).
  113. FOR EACH ArtLief NO-LOCK USE-INDEX ArtLief-k1
  114. WHERE ArtLief.Firma = Artst.Firma
  115. AND ArtLief.Artnr = Artst.Artnr
  116. AND ArtLief.Inhalt = Artst.Inhalt
  117. AND ArtLief.Jahr = Artst.Jahr :
  118. RUN BEREINIGEN ( 0, ArtLief.S_Artnr ).
  119. /*
  120. RUN BEREINIGEN ( 0, ArtLief.S_Bez1 ).
  121. RUN BEREINIGEN ( 0, ArtLief.S_Bez2 ).
  122. */
  123. cFeld = 'XLIEFSTX' + STRING(ArtLief.Knr,'999999').
  124. RUN BEREINIGEN ( 0, cFeld ).
  125. END.
  126. Artbez.WortIndex = TRIM(cWort).
  127. RELEASE Artst .
  128. RELEASE KGebinde.
  129. RELEASE Artbez .
  130. RELEASE ArtLief .
  131. END.
  132. PROCEDURE BEREINIGEN:
  133. DEF INPUT PARAMETER ipArt AS INT NO-UNDO.
  134. DEF INPUT PARAMETER ipString AS CHAR NO-UNDO.
  135. DEF VAR wString AS CHAR NO-UNDO.
  136. DEF VAR xString AS CHAR NO-UNDO.
  137. DEF VAR yy AS INT NO-UNDO.
  138. IF ipString = '' THEN NEXT.
  139. wString = ipString.
  140. IF ipArt = 1 THEN DO:
  141. wString = REPLACE(wString, ' ', '').
  142. wString = REPLACE(wString, '.', '').
  143. wString = REPLACE(wString, '/', '').
  144. wString = REPLACE(wString, '-', '').
  145. END.
  146. wString = REPLACE(wString, '*' , '' ).
  147. wString = REPLACE(wString, '&' , ' ').
  148. wString = REPLACE(wString, '+' , '' ).
  149. wString = REPLACE(wString, '(' , '' ).
  150. wString = REPLACE(wString, ')' , '' ).
  151. wString = REPLACE(wString, '!' , '' ).
  152. wString = REPLACE(wString, '|' , '' ).
  153. wString = REPLACE(wString, '^' , '' ).
  154. wString = REPLACE(wString, ';' , '' ).
  155. wString = REPLACE(wString, "'" , '' ).
  156. wString = REPLACE(wString, ',' , '' ).
  157. wString = REPLACE(wString, ' ', ' ').
  158. wString = REPLACE(wString, '-' , ' ').
  159. wString = TRIM(wString).
  160. IF wString = '' THEN NEXT.
  161. DO yy = 1 TO NUM-ENTRIES(wString, ' '):
  162. xString = ENTRY(yy, wString, ' ').
  163. IF LOOKUP(xString, cWort, ' ') > 0 THEN NEXT.
  164. cWort = cWort + (IF cWort = '' THEN '' ELSE ' ')
  165. + xString.
  166. END.
  167. END PROCEDURE.