TRIGGER PROCEDURE FOR WRITE OF Adresse NEW BUFFER NAdresse OLD BUFFER OAdresse. 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. hBuffer = BUFFER NAdresse:HANDLE. /* entfernen von Sonderzeichen */ DO kk = 1 TO hBuffer:NUM-FIELDS: IF hBuffer:BUFFER-FIELD(kk):DATA-TYPE <> "CHARACTER" THEN NEXT. IF hBuffer:BUFFER-FIELD(kk):NAME BEGINS "Bem" THEN NEXT. /* Bemerkungsfeld kann/darf cr/lf enthalten */ IF hBuffer:BUFFER-FIELD(kk):EXTENT > 0 THEN NEXT. IF INDEX(hBuffer:BUFFER-FIELD(kk):BUFFER-VALUE, CHR(10)) = 0 AND INDEX(hBuffer:BUFFER-FIELD(kk):BUFFER-VALUE, CHR(13)) = 0 THEN NEXT. hBuffer:BUFFER-FIELD(kk):BUFFER-VALUE = REPLACE(hBuffer:BUFFER-FIELD(kk):BUFFER-VALUE, CHR(10), ''). hBuffer:BUFFER-FIELD(kk):BUFFER-VALUE = REPLACE(hBuffer:BUFFER-FIELD(kk):BUFFER-VALUE, CHR(13), ''). END. BUFFER-COMPARE NAdresse EXCEPT BriefAnr AdrArt Anschrift ErfDat ErfSb MutDat MutSb Anzeig Anzeig_br Cd01 Cd02 Cd03 Cd04 Cd05 Cd06 Cd07 Cd08 Cd09 Cd10 Cd11 Cd12 Cd13 Cd14 Cd15 Funktion AnschrFix WortIndex TO OAdresse SAVE RESULT IN cDiff NO-ERROR. IF cDiff = ? THEN cDiff = ''. IF cDiff = '' THEN RETURN. ASSIGN cWort = '' NAdresse.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. IF cFeld BEGINS 'Bem' THEN NEXT. IF cFeld = 'Firma' 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')) ). FOR EACH Ansprech NO-LOCK WHERE Ansprech.Firma = NAdresse.Firma AND Ansprech.Knr = NAdresse.Knr : hBuffer = BUFFER Ansprech:HANDLE. 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. IF cFeld BEGINS 'Bem' THEN NEXT. IF cFeld = 'Firma' 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 = NAdresse.Firma: IF CAN-FIND ( Debst NO-LOCK USE-INDEX Debst-k1 WHERE Debst.Firma = Steuer.Firma AND Debst.Knr = NAdresse.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 = NAdresse.Knr AND Liefst.Aktiv) THEN DO: RUN BEREINIGEN ( 0, 'XLIEFSTX' ). END. END. NAdresse.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 xString 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 = REPLACE(wString, '-' , ' '). wString = TRIM(wString). IF wString = '' THEN RETURN. DO yy = 1 TO NUM-ENTRIES(wString, ' '): xString = ENTRY(yy, wString, ' '). IF LOOKUP(xString, cWort, ' ') > 0 THEN NEXT. cWort = cWort + (IF cWort = '' THEN '' ELSE ' ') + xString. END. END PROCEDURE.