TRIGGER PROCEDURE FOR WRITE OF Ansprech NEW BUFFER NAnsprech OLD BUFFER OAnsprech. DEF VAR cDiff AS CHAR NO-UNDO. DEF VAR cFeld AS CHAR NO-UNDO. DEF VAR hBuffer AS HANDLE NO-UNDO. DEF VAR hFeld1 AS HANDLE NO-UNDO. DEF VAR kk AS INT NO-UNDO. DEF VAR cWort AS CHAR NO-UNDO. DEF VAR iArt AS INT NO-UNDO. DEF TEMP-TABLE tAnsprech LIKE Ansprech. BUFFER-COMPARE NAnsprech EXCEPT BriefAnr AdrArt Anschrift Anzeig Anzeig_br Cd01 Cd02 Cd03 Cd04 Cd05 Cd06 Cd07 Cd08 Cd09 Cd10 Cd11 Cd12 Cd13 Cd14 Cd15 TO OAnsprech SAVE RESULT IN cDiff NO-ERROR. IF cDiff = ? THEN cDiff = ''. IF cDiff = '' THEN RETURN. DISABLE TRIGGERS FOR LOAD OF Adresse. FIND Adresse WHERE Adresse.Firma = NAnsprech.Firma AND Adresse.Knr = NAnsprech.Knr. ASSIGN hBuffer = BUFFER Adresse:HANDLE cWort = '' Adresse.WortIndex = ''. DO kk = 1 TO hBuffer:NUM-FIELDS: hFeld1 = hBuffer:BUFFER-FIELD(kk). IF hFeld1:EXTENT > 0 THEN NEXT. IF NOT hFeld1:DATA-TYPE BEGINS 'CHAR' THEN NEXT. IF hFeld1:BUFFER-VALUE(0) = ? THEN hFeld1:BUFFER-VALUE(0) = ''. cFeld = hFeld1:NAME. IF cFeld BEGINS 'Erf' THEN NEXT. IF cFeld BEGINS 'Mut' THEN NEXT. IF cFeld BEGINS 'Anzeig' THEN NEXT. IF cFeld BEGINS 'Anschr' THEN NEXT. IF cFeld BEGINS 'Word' THEN NEXT. IF cFeld BEGINS 'Brief' THEN NEXT. IF cFeld BEGINS 'Cd' THEN NEXT. IF cFeld BEGINS 'Wort' THEN NEXT. iArt = 0. IF cFeld BEGINS 'Tel' THEN iArt = 1. IF cFeld BEGINS 'Nat' THEN iArt = 1. RUN BEREINIGEN ( iArt, hFeld1:BUFFER-VALUE(0) ). END. hFeld1 = hBuffer:BUFFER-FIELD('Knr'). RUN BEREINIGEN ( 0, TRIM(STRING(INTEGER(hFeld1:BUFFER-VALUE(0)),'>>>>>>9')) ). EMPTY TEMP-TABLE tAnsprech. CREATE tAnsprech. BUFFER-COPY NAnsprech to tAnsprech. FOR EACH Ansprech NO-LOCK WHERE Ansprech.Firma = NAnsprech.Firma AND Ansprech.Knr = NAnsprech.Knr AND Ansprech.Ind <> NAnsprech.Ind: CREATE tAnsprech. BUFFER-COPY Ansprech to tAnsprech. END. hBuffer = TEMP-TABLE tAnsprech:DEFAULT-BUFFER-HANDLE. FOR EACH tAnsprech: DO kk = 1 TO hBuffer:NUM-FIELDS: hFeld1 = hBuffer:BUFFER-FIELD(kk). IF hFeld1:EXTENT > 0 THEN NEXT. IF NOT hFeld1:DATA-TYPE BEGINS 'CHAR' THEN NEXT. IF hFeld1:BUFFER-VALUE(0) = ? THEN hFeld1:BUFFER-VALUE(0) = ''. cFeld = hFeld1:NAME. IF cFeld BEGINS 'Erf' THEN NEXT. IF cFeld BEGINS 'Mut' THEN NEXT. IF cFeld BEGINS 'Anzeig' THEN NEXT. IF cFeld BEGINS 'Anschr' THEN NEXT. IF cFeld BEGINS 'Word' THEN NEXT. IF cFeld BEGINS 'Brief' THEN NEXT. IF cFeld BEGINS 'Cd' THEN NEXT. IF cFeld BEGINS 'Wort' THEN NEXT. iArt = 0. IF cFeld BEGINS 'Tel' THEN iArt = 1. IF cFeld BEGINS 'Nat' THEN iArt = 1. RUN BEREINIGEN ( iArt, hFeld1:BUFFER-VALUE(0) ). END. END. FOR EACH Steuer NO-LOCK WHERE Steuer.Firma < '9999' AND Steuer.AdFirma = Adresse.Firma: IF CAN-FIND ( Debst NO-LOCK USE-INDEX Debst-k1 WHERE Debst.Firma = Steuer.Firma AND Debst.Knr = Adresse.Knr AND Debst.Aktiv) THEN DO: RUN BEREINIGEN ( 0, 'XDEBSTX' ). END. IF CAN-FIND ( Liefst NO-LOCK USE-INDEX Liefst-k1 WHERE Liefst.Firma = Steuer.Firma AND Liefst.Knr = Adresse.Knr AND Liefst.Aktiv) THEN DO: RUN BEREINIGEN ( 0, 'XLIEFSTX' ). END. END. Adresse.WortIndex = cWort. RETURN. PROCEDURE BEREINIGEN: DEF INPUT PARAMETER ipArt AS INT NO-UNDO. DEF INPUT PARAMETER ipString AS CHAR NO-UNDO. DEF VAR wString AS CHAR NO-UNDO. DEF VAR yy AS INT NO-UNDO. IF ipString = '' THEN RETURN. wString = ipString. IF ipArt = 1 THEN DO: wString = REPLACE(wString, ' ', ''). wString = REPLACE(wString, '.', ''). wString = REPLACE(wString, '/', ''). wString = REPLACE(wString, '-', ''). END. wString = REPLACE(wString, '*' , '' ). wString = REPLACE(wString, '&' , ' '). wString = REPLACE(wString, '+' , '' ). wString = REPLACE(wString, '(' , '' ). wString = REPLACE(wString, ')' , '' ). wString = REPLACE(wString, '!' , '' ). wString = REPLACE(wString, '|' , '' ). wString = REPLACE(wString, '^' , '' ). wString = REPLACE(wString, ';' , '' ). wString = REPLACE(wString, "'" , '' ). wString = REPLACE(wString, ',' , '' ). wString = REPLACE(wString, ' ', ' '). wString = TRIM(wString). IF wString = '' THEN RETURN. IF LOOKUP(wString, cWort, ' ') > 0 THEN NEXT. cWort = cWort + (IF cWort = '' THEN '' ELSE ' ') + wString. END PROCEDURE.