&ANALYZE-SUSPEND _VERSION-NUMBER AB_v10r12 GUI ADM2 &ANALYZE-RESUME /* Connected Databases anadat PROGRESS */ &Scoped-define WINDOW-NAME CURRENT-WINDOW &Scoped-define FRAME-NAME gSuchenAdressen {adecomm/appserv.i} /* Temp-Table and Buffer definitions */ DEFINE TEMP-TABLE tAdresse NO-UNDO LIKE Adresse FIELD iRecid AS RECID FIELD cSort AS CHAR . &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CUSTOM _DEFINITIONS gSuchenAdressen /*------------------------------------------------------------------------ File: Description: from cntnrdlg.w - ADM2 SmartDialog Template Input Parameters: Output Parameters: Author: Created: ------------------------------------------------------------------------*/ /* This .W file was created with the Progress AppBuilder. */ /*----------------------------------------------------------------------*/ /* Create an unnamed pool to store all the widgets created by this procedure. This is a good default which assures that this procedure's triggers and internal procedures will execute in this procedure's storage, and that proper cleanup will occur on deletion of the procedure. */ CREATE WIDGET-POOL. /* *************************** Definitions ************************** */ /* Parameters Definitions --- */ DEF INPUT PARAMETER ipSuchbe AS CHAR NO-UNDO. DEF OUTPUT PARAMETER opRecid AS RECID NO-UNDO. /* Local Variable Definitions --- */ &SCOPED-DEFINE Tabelle tAdresse &SCOPED-DEFINE Feld WordIndex { incl/dlgdefinition.i } { incl/dynbrwdefinition.i } DEF VAR xFakAdr AS CHAR NO-UNDO. DEF VAR cHerk AS CHAR NO-UNDO. DEF VAR fAdmin AS LOG NO-UNDO. DEF VAR iVertr AS INT NO-UNDO. DEF VAR lInaktiv AS LOG NO-UNDO. DEF VAR cInstallation AS CHAR NO-UNDO. DEF VAR cSort AS CHAR INIT 'cSort' NO-UNDO. DEF VAR lAufAb AS LOG INIT TRUE NO-UNDO. DEF VAR cAufAb AS CHAR INIT '' NO-UNDO. DEF VAR lAlfa AS LOG INIT FALSE NO-UNDO. DEF VAR iPrior AS INT INIT 0 NO-UNDO. DEF VAR BGNormal AS INT NO-UNDO. DEF VAR BGFreigabe AS INT NO-UNDO. DEF VAR BGDelete AS INT NO-UNDO. DEF VAR RetValue AS CHAR NO-UNDO. DEF TEMP-TABLE tSuchFelder NO-UNDO FIELD iWort AS INT FIELD iSuch AS INT FIELD cSuch AS CHAR FIELD lGefunden AS LOG INIT FALSE INDEX tSuchFelder-k1 IS PRIMARY iWort . { src/adm2/widgetprto.i } /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-PREPROCESSOR-BLOCK /* ******************** Preprocessor Definitions ******************** */ &Scoped-define PROCEDURE-TYPE SmartDialog &Scoped-define DB-AWARE no &Scoped-define ADM-CONTAINER DIALOG-BOX &Scoped-define ADM-SUPPORTED-LINKS Data-Target,Data-Source,Page-Target,Update-Source,Update-Target /* Name of designated FRAME-NAME and/or first browse and/or first query */ &Scoped-define FRAME-NAME gSuchenAdressen &Scoped-define BROWSE-NAME Browser_suchen /* Internal Tables (found by Frame, Query & Browse Queries) */ &Scoped-define INTERNAL-TABLES tAdresse /* Definitions for BROWSE Browser_suchen */ &Scoped-define FIELDS-IN-QUERY-Browser_suchen tAdresse.Knr ~ tAdresse.Anzeig_br tAdresse.Firma1 tAdresse.Name tAdresse.Ort ~ DYNAMIC-FUNCTION('getFakturaAdresse':U, Knr ) @ xFakAdr tAdresse.Suchbe ~ tAdresse.cSort @ cSort &Scoped-define ENABLED-FIELDS-IN-QUERY-Browser_suchen &Scoped-define QUERY-STRING-Browser_suchen FOR EACH tAdresse NO-LOCK INDEXED-REPOSITION &Scoped-define OPEN-QUERY-Browser_suchen OPEN QUERY Browser_suchen FOR EACH tAdresse NO-LOCK INDEXED-REPOSITION. &Scoped-define TABLES-IN-QUERY-Browser_suchen tAdresse &Scoped-define FIRST-TABLE-IN-QUERY-Browser_suchen tAdresse /* Definitions for DIALOG-BOX gSuchenAdressen */ &Scoped-define OPEN-BROWSERS-IN-QUERY-gSuchenAdressen ~ ~{&OPEN-QUERY-Browser_suchen} /* Standard List Definitions */ &Scoped-Define ENABLED-OBJECTS RECT-2 F_Suchbegriffe Browser_suchen &Scoped-Define DISPLAYED-OBJECTS F_Suchbegriffe /* Custom List Definitions */ /* List-1,List-2,List-3,List-4,List-5,List-6 */ /* _UIB-PREPROCESSOR-BLOCK-END */ &ANALYZE-RESUME /* ************************ Function Prototypes ********************** */ &ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION-FORWARD getAdresseSelektiert gSuchenAdressen FUNCTION getAdresseSelektiert RETURNS LOGICAL ( ipKnr AS INT ) FORWARD. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION-FORWARD getFakturaAdresse gSuchenAdressen FUNCTION getFakturaAdresse RETURNS CHARACTER ( ipKnr AS INT ) FORWARD. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION-FORWARD setKollonnenfarbe gSuchenAdressen FUNCTION setKollonnenfarbe RETURNS LOGICAL ( ipFarbe AS INT ) FORWARD. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION-FORWARD startQueryAdresse gSuchenAdressen FUNCTION startQueryAdresse RETURNS INTEGER ( /* parameter-definitions */ ) FORWARD. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION-FORWARD startQueryAuftrag gSuchenAdressen FUNCTION startQueryAuftrag RETURNS INTEGER ( /* parameter-definitions */ ) FORWARD. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION-FORWARD startQueryDebst gSuchenAdressen FUNCTION startQueryDebst RETURNS INTEGER ( /* parameter-definitions */ ) FORWARD. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION-FORWARD startQueryKundenbesuch gSuchenAdressen FUNCTION startQueryKundenbesuch RETURNS INTEGER ( /* parameter-definitions */ ) FORWARD. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION-FORWARD startQueryLieferant gSuchenAdressen FUNCTION startQueryLieferant RETURNS INTEGER ( /* parameter-definitions */ ) FORWARD. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME /* *********************** Control Definitions ********************** */ /* Define a dialog box */ /* Menu Definitions */ DEFINE MENU POPUP-MENU-Browser_suchen MENU-ITEM X_INAKTIVE_EINAUS LABEL "inaktive anzeigen ?" TOGGLE-BOX. /* Definitions of the field level widgets */ DEFINE VARIABLE F_Suchbegriffe AS CHARACTER FORMAT "X(256)":U LABEL "suchen nach" VIEW-AS FILL-IN NATIVE SIZE 50 BY 1 BGCOLOR 15 NO-UNDO. DEFINE RECTANGLE RECT-2 EDGE-PIXELS 2 GRAPHIC-EDGE NO-FILL SIZE 210 BY 19.52. /* Query definitions */ &ANALYZE-SUSPEND DEFINE QUERY Browser_suchen FOR tAdresse SCROLLING. &ANALYZE-RESUME /* Browse definitions */ DEFINE BROWSE Browser_suchen &ANALYZE-SUSPEND _UIB-CODE-BLOCK _DISPLAY-FIELDS Browser_suchen gSuchenAdressen _STRUCTURED QUERY Browser_suchen NO-LOCK DISPLAY tAdresse.Knr FORMAT "999999":U WIDTH 8 tAdresse.Anzeig_br COLUMN-LABEL "Adresse" FORMAT "x(75)":U tAdresse.Firma1 FORMAT "x(35)":U WIDTH 25 tAdresse.Name FORMAT "x(35)":U WIDTH 25 tAdresse.Ort FORMAT "X(30)":U WIDTH 25 DYNAMIC-FUNCTION('getFakturaAdresse':U, Knr ) @ xFakAdr COLUMN-LABEL "Faktura-Adresse" FORMAT "x(60)":U WIDTH 40 tAdresse.Suchbe FORMAT "X(20)":U tAdresse.cSort @ cSort COLUMN-LABEL "Sortierung" FORMAT "x(12)":U /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME WITH NO-ROW-MARKERS SEPARATORS SIZE 206 BY 17.14. /* ************************ Frame Definitions *********************** */ DEFINE FRAME gSuchenAdressen F_Suchbegriffe AT ROW 2 COL 17.8 COLON-ALIGNED WIDGET-ID 4 Browser_suchen AT ROW 3.38 COL 3 WIDGET-ID 200 RECT-2 AT ROW 1.24 COL 2 WIDGET-ID 2 SPACE(1.79) SKIP(0.37) WITH VIEW-AS DIALOG-BOX KEEP-TAB-ORDER SIDE-LABELS NO-UNDERLINE THREE-D SCROLLABLE TITLE "Adressen suchen" WIDGET-ID 100. /* *********************** Procedure Settings ************************ */ &ANALYZE-SUSPEND _PROCEDURE-SETTINGS /* Settings for THIS-PROCEDURE Type: SmartDialog Allow: Basic,Browse,DB-Fields,Query,Smart Container Links: Data-Target,Data-Source,Page-Target,Update-Source,Update-Target Design Page: 1 Other Settings: COMPILE APPSERVER Temp-Tables and Buffers: TABLE: tAdresse T "?" NO-UNDO AnaDat Adresse ADDITIONAL-FIELDS: FIELD iRecid AS RECID FIELD cSort AS CHAR END-FIELDS. END-TABLES. */ &ANALYZE-RESUME _END-PROCEDURE-SETTINGS &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CUSTOM _INCLUDED-LIB gSuchenAdressen /* ************************* Included-Libraries *********************** */ {src/adm2/containr.i} /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME /* *********** Runtime Attributes and AppBuilder Settings *********** */ &ANALYZE-SUSPEND _RUN-TIME-ATTRIBUTES /* SETTINGS FOR DIALOG-BOX gSuchenAdressen FRAME-NAME */ /* BROWSE-TAB Browser_suchen F_Suchbegriffe gSuchenAdressen */ ASSIGN FRAME gSuchenAdressen:SCROLLABLE = FALSE FRAME gSuchenAdressen:HIDDEN = TRUE. ASSIGN Browser_suchen:POPUP-MENU IN FRAME gSuchenAdressen = MENU POPUP-MENU-Browser_suchen:HANDLE Browser_suchen:COLUMN-RESIZABLE IN FRAME gSuchenAdressen = TRUE Browser_suchen:COLUMN-MOVABLE IN FRAME gSuchenAdressen = TRUE. /* _RUN-TIME-ATTRIBUTES-END */ &ANALYZE-RESUME /* Setting information for Queries and Browse Widgets fields */ &ANALYZE-SUSPEND _QUERY-BLOCK BROWSE Browser_suchen /* Query rebuild information for BROWSE Browser_suchen _TblList = "Temp-Tables.tAdresse" _Options = "NO-LOCK INDEXED-REPOSITION" _FldNameList[1] > Temp-Tables.tAdresse.Knr "tAdresse.Knr" ? ? "integer" ? ? ? ? ? ? no ? no no "8" yes no no "U" "" "" "" "" "" "" 0 no 0 no no _FldNameList[2] > Temp-Tables.tAdresse.Anzeig_br "tAdresse.Anzeig_br" "Adresse" ? "character" ? ? ? ? ? ? no ? no no ? yes no no "U" "" "" "" "" "" "" 0 no 0 no no _FldNameList[3] > Temp-Tables.tAdresse.Firma1 "tAdresse.Firma1" ? ? "character" ? ? ? ? ? ? no ? no no "25" yes no no "U" "" "" "" "" "" "" 0 no 0 no no _FldNameList[4] > Temp-Tables.tAdresse.Name "tAdresse.Name" ? ? "character" ? ? ? ? ? ? no ? no no "25" yes no no "U" "" "" "" "" "" "" 0 no 0 no no _FldNameList[5] > Temp-Tables.tAdresse.Ort "tAdresse.Ort" ? ? "character" ? ? ? ? ? ? no ? no no "25" yes no no "U" "" "" "" "" "" "" 0 no 0 no no _FldNameList[6] > "_" "DYNAMIC-FUNCTION('getFakturaAdresse':U, Knr ) @ xFakAdr" "Faktura-Adresse" "x(60)" ? ? ? ? ? ? ? no ? no no "40" yes no no "U" "" "" "" "" "" "" 0 no 0 no no _FldNameList[7] = Temp-Tables.tAdresse.Suchbe _FldNameList[8] > "_" "tAdresse.cSort @ cSort" "Sortierung" "x(12)" ? ? ? ? ? ? ? no ? no no ? yes no no "U" "" "" "" "" "" "" 0 no 0 no no _Query is OPENED */ /* BROWSE Browser_suchen */ &ANALYZE-RESUME &ANALYZE-SUSPEND _QUERY-BLOCK DIALOG-BOX gSuchenAdressen /* Query rebuild information for DIALOG-BOX gSuchenAdressen _Options = "SHARE-LOCK" _Query is NOT OPENED */ /* DIALOG-BOX gSuchenAdressen */ &ANALYZE-RESUME /* ************************ Control Triggers ************************ */ &Scoped-define SELF-NAME gSuchenAdressen &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL gSuchenAdressen gSuchenAdressen ON END-ERROR OF FRAME gSuchenAdressen /* Adressen suchen */ DO: opRecid = ?. RUN ENDE. RETURN NO-APPLY. END. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL gSuchenAdressen gSuchenAdressen ON WINDOW-CLOSE OF FRAME gSuchenAdressen /* Adressen suchen */ DO: RUN ENDE. RETURN NO-APPLY. END. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &Scoped-define BROWSE-NAME Browser_suchen &Scoped-define SELF-NAME Browser_suchen &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL Browser_suchen gSuchenAdressen ON END-ERROR OF Browser_suchen IN FRAME gSuchenAdressen DO: APPLY 'ENTRY' TO F_Suchbegriffe. RETURN NO-APPLY. END. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL Browser_suchen gSuchenAdressen ON LEFT-MOUSE-DBLCLICK OF Browser_suchen IN FRAME gSuchenAdressen DO: IF NUM-RESULTS('{&BROWSE-NAME}') = ? THEN RETURN NO-APPLY. IF NUM-RESULTS('{&BROWSE-NAME}') = 0 THEN RETURN NO-APPLY. BROWSE {&BROWSE-NAME}:FETCH-SELECTED-ROW(1). opRecid = tAdresse.iRecid. RUN ENDE. RETURN NO-APPLY. END. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL Browser_suchen gSuchenAdressen ON RETURN OF Browser_suchen IN FRAME gSuchenAdressen DO: IF NUM-RESULTS('{&BROWSE-NAME}') = ? THEN RETURN NO-APPLY. IF NUM-RESULTS('{&BROWSE-NAME}') = 0 THEN RETURN NO-APPLY. BROWSE {&BROWSE-NAME}:FETCH-SELECTED-ROW(1). opRecid = tAdresse.iRecid. RUN ENDE. RETURN NO-APPLY. END. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL Browser_suchen gSuchenAdressen ON ROW-DISPLAY OF Browser_suchen IN FRAME gSuchenAdressen DO: DEF VAR iFarbe AS INT NO-UNDO. IF NOT tAdresse.Aktiv THEN iFarbe = BGDelete. ELSE IF NOT tAdresse.lFreigabe THEN iFarbe = BGFreigabe. ELSE iFarbe = BGNormal. DYNAMIC-FUNCTION('setKollonnenfarbe':U, iFarbe) NO-ERROR. END. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL Browser_suchen gSuchenAdressen ON START-SEARCH OF Browser_suchen IN FRAME gSuchenAdressen DO: { incl/dynbrwstartsearch.i } END. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &Scoped-define SELF-NAME F_Suchbegriffe &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL F_Suchbegriffe gSuchenAdressen ON RETURN OF F_Suchbegriffe IN FRAME gSuchenAdressen /* suchen nach */ DO: ASSIGN F_Suchbegriffe. RUN START_QUERY ( SELF:SCREEN-VALUE). RETURN NO-APPLY. END. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &UNDEFINE SELF-NAME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CUSTOM _MAIN-BLOCK gSuchenAdressen /* *************************** Main Block *************************** */ IF ipSuchbe = '' THEN ipSuchbe = 'ADR'. IF NUM-ENTRIES(ipSuchbe, ';') = 1 THEN DO: IF ipSuchbe BEGINS 'ADR' THEN ASSIGN cHerk = ipSuchbe ipSuchbe = ''. IF ipSuchbe BEGINS 'AUF' THEN ASSIGN cHerk = ipSuchbe ipSuchbe = ''. IF ipSuchbe BEGINS 'DEB' THEN ASSIGN cHerk = ipSuchbe ipSuchbe = ''. IF ipSuchbe BEGINS 'LIE' THEN ASSIGN cHerk = ipSuchbe ipSuchbe = ''. IF ipSuchbe BEGINS 'KUBES' THEN ASSIGN cHerk = ipSuchbe ipSuchbe = ''. END. IF NUM-ENTRIES(ipSuchbe, ';') > 1 THEN DO: cHerk = ENTRY(01, ipSuchbe, ';') NO-ERROR. ipSuchbe = ENTRY(02, ipSuchbe, ';') NO-ERROR. IF ipSuchbe = ? THEN ipSuchbe = ''. END. IF cHerk BEGINS 'KUBES' THEN DO: iVertr = INTEGER(ENTRY(2, cHerk, ',')) NO-ERROR. cHerk = ENTRY(1, cHerk, ',') NO-ERROR. END. { incl/dlgmainblock.i } { incl/dynbrwmainblock.i } { incl/dynbrwinternproc.i } F_Suchbegriffe = ipSuchbe. opRecid = ?. fAdmin = DYNAMIC-FUNCTION('getAdmin':U ) NO-ERROR. cInstallation = DYNAMIC-FUNCTION('getInstallation':U) NO-ERROR. { src/adm2/dialogmn.i } /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME /* ********************** Internal Procedures *********************** */ &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE adm-create-objects gSuchenAdressen _ADM-CREATE-OBJECTS PROCEDURE adm-create-objects : /*------------------------------------------------------------------------------ Purpose: Create handles for all SmartObjects used in this procedure. After SmartObjects are initialized, then SmartLinks are added. Parameters: ------------------------------------------------------------------------------*/ END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE destroyObject gSuchenAdressen PROCEDURE destroyObject : /*------------------------------------------------------------------------------ Purpose: Super Override Parameters: Notes: ------------------------------------------------------------------------------*/ { incl/dynbrwdestroy.i } RUN SUPER. /* Code placed here will execute AFTER standard behavior. */ END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE disable_UI gSuchenAdressen _DEFAULT-DISABLE PROCEDURE disable_UI : /*------------------------------------------------------------------------------ Purpose: DISABLE the User Interface Parameters: Notes: Here we clean-up the user-interface by deleting dynamic widgets we have created and/or hide frames. This procedure is usually called when we are ready to "clean-up" after running. ------------------------------------------------------------------------------*/ /* Hide all frames. */ HIDE FRAME gSuchenAdressen. END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE enableObject gSuchenAdressen PROCEDURE enableObject : /*------------------------------------------------------------------------------ Purpose: Super Override Parameters: Notes: ------------------------------------------------------------------------------*/ GET-KEY-VALUE SECTION 'Grundeinstellungen' KEY 'BGGeloescht' VALUE RetValue. IF RetValue = ? THEN ASSIGN RetValue = ''. IF RetValue = '' THEN ASSIGN RetValue = '12'. BGDelete = INTEGER(RetValue). GET-KEY-VALUE SECTION 'Grundeinstellungen' KEY 'BGFreigabe' VALUE RetValue. IF RetValue = ? THEN ASSIGN RetValue = ''. IF RetValue = '' THEN ASSIGN RetValue = '14'. BGFreigabe = INTEGER(RetValue). BGNormal = 15. { incl/dlgenableobject.i } END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE enable_UI gSuchenAdressen _DEFAULT-ENABLE PROCEDURE enable_UI : /*------------------------------------------------------------------------------ Purpose: ENABLE the User Interface Parameters: Notes: Here we display/view/enable the widgets in the user-interface. In addition, OPEN all queries associated with each FRAME and BROWSE. These statements here are based on the "Other Settings" section of the widget Property Sheets. ------------------------------------------------------------------------------*/ DISPLAY F_Suchbegriffe WITH FRAME gSuchenAdressen. ENABLE RECT-2 F_Suchbegriffe Browser_suchen WITH FRAME gSuchenAdressen. VIEW FRAME gSuchenAdressen. {&OPEN-BROWSERS-IN-QUERY-gSuchenAdressen} END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE ENDE gSuchenAdressen PROCEDURE ENDE : /*------------------------------------------------------------------------------ Purpose: Parameters: Notes: ------------------------------------------------------------------------------*/ { incl/dlgende.i } END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE INAKTIVE_EINAUS gSuchenAdressen PROCEDURE INAKTIVE_EINAUS : /*------------------------------------------------------------------------------ Purpose: Parameters: Notes: ------------------------------------------------------------------------------*/ DEF VAR cString AS CHAR NO-UNDO. DO WITH FRAME {&FRAME-NAME}: cString = F_Suchbegriffe:SCREEN-VALUE. lInaktiv = NOT lInaktiv. DYNAMIC-FUNCTION('setAnzeigeAdresseInaktiv':U, lInaktiv ) NO-ERROR. RUN START_QUERY ( cString ). RETURN NO-APPLY. END. END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE initializeObject gSuchenAdressen PROCEDURE initializeObject : /*------------------------------------------------------------------------------ Purpose: Super Override Parameters: Notes: ------------------------------------------------------------------------------*/ DEF VAR cName AS CHAR NO-UNDO. DEF VAR xWhere AS CHAR NO-UNDO. RUN SUPER. DO WITH FRAME {&FRAME-NAME}: hbQuery = {&BROWSE-NAME}:QUERY. hqBuffer = hbQuery:GET-BUFFER-HANDLE(1). cqTabelle = hqBuffer:NAME. END. xWhere = SUBSTITUTE('FOR EACH &1 NO-LOCK BY &2 &3 ', cqTabelle, cSort, cAufAb ). hbQuery:QUERY-PREPARE(xWhere). { incl/dynbrwinitialize.i} lInaktiv = DYNAMIC-FUNCTION('getAnzeigeAdresseInaktiv':U) NO-ERROR. IF NOT fAdmin THEN lInaktiv = FALSE. hInaktiv:CHECKED = lInaktiv. IF ipSuchbe <> '' THEN RUN START_QUERY ( ipSuchbe ). END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE OPENQUERY gSuchenAdressen PROCEDURE OPENQUERY : /*------------------------------------------------------------------------------ Purpose: Parameters: Notes: ------------------------------------------------------------------------------*/ DEF VAR xWhere AS CHAR NO-UNDO. xWhere = SUBSTITUTE('FOR EACH &1 NO-LOCK BY &2 &3 ', cqTabelle, cSort, cAufAb). hbQuery:QUERY-PREPARE(xWhere) NO-ERROR. hbQuery:QUERY-OPEN() NO-ERROR. DO WITH FRAME {&FRAME-NAME}: IF hbQuery:NUM-RESULTS = 0 OR hbQuery:NUM-RESULTS = ? THEN APPLY 'ENTRY' TO F_Suchbegriffe. ELSE APPLY 'ENTRY' TO {&BROWSE-NAME}. RETURN NO-APPLY. END. END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE SET_SORT gSuchenAdressen PROCEDURE SET_SORT : /*------------------------------------------------------------------------------ Purpose: Parameters: Notes: ------------------------------------------------------------------------------*/ DEF INPUT PARAMETER ipSort AS CHAR NO-UNDO. IF ipSort = cSort THEN lAufAb = NOT lAufAb. cSort = ipSort. cAufAb = (IF lAufAb THEN '' ELSE 'DESCENDING'). RUN OPENQUERY. END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE START_QUERY gSuchenAdressen PROCEDURE START_QUERY : /*------------------------------------------------------------------------------ Purpose: Parameters: Notes: ------------------------------------------------------------------------------*/ DEF INPUT PARAMETER ipWorte AS CHAR NO-UNDO. DEF VAR xWort AS CHAR NO-UNDO. DEF VAR aWorte AS CHAR NO-UNDO. DEF VAR yy AS INT NO-UNDO. DEF VAR Zahl AS INT NO-UNDO. DEF VAR iKnrFak AS INT NO-UNDO. DEF VAR fNumSort AS LOG INIT FALSE NO-UNDO. DEF VAR iAnzAdr AS INT NO-UNDO. DEF VAR cSuchbe AS CHAR NO-UNDO. EMPTY TEMP-TABLE tAdresse. EMPTY TEMP-TABLE tSuchFelder. ipWorte = REPLACE(ipWorte, '*', ''). iPrior = 0. lAlfa = FALSE. DO yy = 1 TO NUM-ENTRIES(ipWorte, ' '): CREATE tSuchFelder. ASSIGN tSuchFelder.iWort = yy tSuchFelder.iSuch = 0 tSuchFelder.cSuch = '' tSuchFelder.lGefunden = FALSE. xWort = TRIM(ENTRY(yy, ipWorte, ' ')). Zahl = INTEGER(xWort) NO-ERROR. IF NOT ERROR-STATUS:ERROR AND Zahl < 1000000 AND NOT xWort BEGINS '0' THEN DO: tSuchFelder.iSuch = Zahl. CREATE tSuchFelder. ASSIGN tSuchFelder.iWort = yy tSuchFelder.iSuch = 0 tSuchFelder.cSuch = xWort tSuchFelder.lGefunden = FALSE. NEXT. END. tSuchFelder.cSuch = xWort. END. FIND FIRST tSuchFelder NO-LOCK NO-ERROR. IF NOT AVAILABLE tSuchFelder THEN DO: MESSAGE 'Kein Suchbegriff eingegeben' VIEW-AS ALERT-BOX INFORMATION. APPLY 'ENTRY' TO F_Suchbegriffe IN FRAME {&FRAME-NAME}. RETURN NO-APPLY. END. CASE cHerk: WHEN 'ADR' THEN iAnzAdr = DYNAMIC-FUNCTION('startQueryAdresse':U ). WHEN 'AUF' THEN iAnzAdr = DYNAMIC-FUNCTION('startQueryAuftrag':U ). WHEN 'DEB' THEN iAnzAdr = DYNAMIC-FUNCTION('startQueryDebst':U ). WHEN 'LIE' THEN iAnzAdr = DYNAMIC-FUNCTION('startQueryLieferant':U ). WHEN 'KUBES' THEN DO: /* oswald spezial */ IF cInstallation = 'oswald' AND iVertr = 30 THEN iVertr = 999999. IF iVertr = 999999 THEN iAnzAdr = DYNAMIC-FUNCTION('startQueryAdresse':U ). ELSE iAnzAdr = DYNAMIC-FUNCTION('startQueryKundenbesuch':U). END. END. IF lAlfa THEN DO: FOR EACH tAdresse: IF tAdresse.Suchbe <> '' THEN cSuchbe = tAdresse.cSort + SUBSTRING(cSuchbe,01,02) + tAdresse.Suchbe. ELSE IF tAdresse.Firma1 <> '' THEN cSuchbe = tAdresse.cSort + SUBSTRING(cSuchbe,01,02) + tAdresse.Firma1. ELSE cSuchbe = tAdresse.cSort + SUBSTRING(cSuchbe,01,02) + tAdresse.Name. tAdresse.cSort = cSuchbe. END. END. RUN OPENQUERY. /* OPEN QUERY {&BROWSE-NAME} FOR EACH tAdresse NO-LOCK BY tAdresse.cSort. DO WITH FRAME {&FRAME-NAME}: IF NUM-RESULTS('{&BROWSE-NAME}') = 0 OR NUM-RESULTS('{&BROWSE-NAME}') = ? THEN APPLY 'ENTRY' TO F_Suchbegriffe. ELSE APPLY 'ENTRY' TO {&BROWSE-NAME}. RETURN NO-APPLY. END. */ RETURN NO-APPLY. END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME /* ************************ Function Implementations ***************** */ &ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION getAdresseSelektiert gSuchenAdressen FUNCTION getAdresseSelektiert RETURNS LOGICAL ( ipKnr AS INT ) : /*------------------------------------------------------------------------------ Purpose: Notes: ------------------------------------------------------------------------------*/ FIND FIRST tAdresse NO-LOCK WHERE tAdresse.Firma = AdFirma AND tAdresse.Knr = ipKnr NO-ERROR. IF AVAILABLE tAdresse THEN RETURN TRUE. RETURN FALSE. END FUNCTION. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION getFakturaAdresse gSuchenAdressen FUNCTION getFakturaAdresse RETURNS CHARACTER ( ipKnr AS INT ) : /*------------------------------------------------------------------------------ Purpose: Notes: ------------------------------------------------------------------------------*/ DEF BUFFER BAdresse FOR Adresse. FIND Debst NO-LOCK WHERE Debst.Firma = Firma AND Debst.Knr = ipKnr NO-ERROR. IF NOT AVAILABLE Debst THEN RETURN ''. IF Debst.KnrFak = 0 THEN RETURN ''. FIND BAdresse NO-LOCK WHERE BAdresse.Firma = AdFirma AND BAdresse.Knr = Debst.KnrFak NO-ERROR. IF NOT AVAILABLE BAdresse THEN RETURN ''. RETURN STRING(BAdresse.Knr,'999999 ') + BAdresse.Anzeig_Br. END FUNCTION. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION setKollonnenfarbe gSuchenAdressen FUNCTION setKollonnenfarbe RETURNS LOGICAL ( ipFarbe AS INT ) : /*------------------------------------------------------------------------------ Purpose: Notes: ------------------------------------------------------------------------------*/ { incl/brwsetzeilenfarbe.i } END FUNCTION. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION startQueryAdresse gSuchenAdressen FUNCTION startQueryAdresse RETURNS INTEGER ( /* parameter-definitions */ ) : /*------------------------------------------------------------------------------ Purpose: Notes: ------------------------------------------------------------------------------*/ DEF VAR iAnzAdr AS INT NO-UNDO. DEF VAR lJa AS LOG NO-UNDO. DEF VAR aWorte AS CHAR NO-UNDO. DEF VAR nWorte AS CHAR NO-UNDO. DEF VAR xWort AS CHAR NO-UNDO. DEF VAR ii AS INT NO-UNDO. /* Auf Adressenummern */ iPrior = iPrior + 1. FOR EACH tSuchFelder NO-LOCK WHERE tSuchFelder.iSuch > 0 AND tSuchFelder.lGefunden = FALSE: FIND Adresse NO-LOCK USE-INDEX Adresse-k1 WHERE Adresse.Firma = AdFirma AND Adresse.Knr = tSuchFelder.iSuch NO-ERROR. IF NOT AVAILABLE Adresse THEN NEXT. IF NOT lInaktiv AND NOT Adresse.Aktiv THEN NEXT. ASSIGN iAnzAdr = iAnzAdr + 1 tSuchFelder.lGefunden = TRUE. CREATE tAdresse. BUFFER-COPY Adresse TO tAdresse ASSIGN tAdresse.iRecid = RECID(Adresse) tAdresse.cSort = STRING(iPrior,'99') + STRING(Adresse.Knr,'99999999'). lAlfa = FALSE. END. DO WHILE TRUE: /* OSWALD-SPEZIALFALL (Suchen nach Suchbegriff) */ IF cInstallation <> 'OSWALD' AND cInstallation <> 'LaTorre' THEN LEAVE. iPrior = iPrior + 1. lJa = FALSE. aWorte = ''. FOR EACH tSuchFelder WHERE tSuchFelder.lGefunden = FALSE AND tSuchFelder.iSuch = 0 AND tSuchFelder.iWort > 0: aWorte = aWorte + (IF aWorte = '' THEN '' ELSE ' ') + (IF tSuchFelder.iSuch = 0 THEN tSuchFelder.cSuch ELSE TRIM(STRING(tSuchFelder.iSuch,'>>>>>>>>>>>9'))). END. IF aWorte = '' THEN LEAVE. FOR EACH Adresse NO-LOCK USE-INDEX Adresse-k2 WHERE Adresse.Firma = AdFirma AND ((lInaktiv) OR (NOT lInaktiv AND Adresse.Aktiv)) AND Adresse.Suchbe BEGINS aWorte: IF NOT DYNAMIC-FUNCTION('getAdresseSelektiert':U, Adresse.Knr ) THEN DO: ASSIGN iAnzAdr = iAnzAdr + 1 lJa = TRUE. CREATE tAdresse. BUFFER-COPY Adresse TO tAdresse ASSIGN tAdresse.iRecid = RECID(Adresse) tAdresse.cSort = STRING(iPrior,'99') + TRIM(SUBSTRING(Adresse.Suchbe,01,12)). END. END. IF lJa THEN lAlfa = TRUE. LEAVE. END. IF cInstallation = 'OSWALD' THEN DO: IF lJa THEN RETURN iAnzAdr. IF iAnzAdr > 0 THEN RETURN iAnzAdr. END. /* Auf genauen Inhalt der eingegebenen Worte */ iPrior = iPrior + 1. aWorte = ''. FOR EACH tSuchFelder WHERE tSuchFelder.lGefunden = FALSE. aWorte = aWorte + (IF aWorte = '' THEN '' ELSE ' ') + (IF tSuchFelder.iSuch = 0 THEN tSuchFelder.cSuch ELSE TRIM(STRING(tSuchFelder.iSuch,'>>>>>>>>>>>9'))). END. IF aWorte = '' THEN RETURN iAnzAdr. lAlfa = TRUE. lJa = FALSE. GENAU: FOR EACH Adresse NO-LOCK WHERE Adresse.Firma = AdFirma AND ((lInaktiv) OR (NOT lInaktiv AND Adresse.Aktiv)) AND Adresse.WortIndex CONTAINS aWorte: DO ii = 1 TO NUM-ENTRIES(aWorte, ' '): xWort = ENTRY(ii, aWorte, ' '). IF LOOKUP(xWort, Adresse.WortIndex, ' ') = 0 THEN NEXT GENAU. END. lJa = TRUE. IF NOT DYNAMIC-FUNCTION('getAdresseSelektiert':U, Adresse.Knr ) THEN DO: CREATE tAdresse. BUFFER-COPY Adresse TO tAdresse ASSIGN tAdresse.iRecid = RECID(Adresse) tAdresse.cSort = STRING(iPrior,'99') + REPLACE(ENTRY(1, F_Suchbegriffe, ' '), '*', '') iAnzAdr = iAnzAdr + 1. END. END. IF lJa AND iAnzAdr >= 20 THEN RETURN iAnzAdr. /* Auf matching Inhalt der eingegebenen Worte mit Beginn */ iPrior = iPrior + 1. aWorte = ''. nWorte = ''. FOR EACH tSuchFelder WHERE tSuchFelder.lGefunden = FALSE. IF tSuchFelder.iWort = 0 THEN DO: nWorte = nWorte + (IF nWorte = '' THEN '' ELSE ' ') + tSuchFelder.cSuch. NEXT. END. IF tSuchFelder.iSuch > 0 THEN nWorte = nWorte + (IF nWorte = '' THEN '' ELSE ' ') + TRIM(STRING(tSuchFelder.iSuch,'>>>>>>>>>>>9')). ELSE aWorte = aWorte + (IF aWorte = '' THEN '' ELSE ' ') + tSuchFelder.cSuch + '*'. END. lJa = FALSE. FOR EACH Adresse NO-LOCK WHERE Adresse.Firma = AdFirma AND ((lInaktiv) OR (NOT lInaktiv AND Adresse.Aktiv)) AND ((nWorte <> '' AND Adresse.WortIndex CONTAINS nWorte) OR (nWorte = '')) AND ((aWorte <> '' AND Adresse.WortIndex MATCHES aWorte) OR (aWorte = '')): lJa = TRUE. IF NOT DYNAMIC-FUNCTION('getAdresseSelektiert':U, Adresse.Knr ) THEN DO: CREATE tAdresse. BUFFER-COPY Adresse TO tAdresse ASSIGN tAdresse.iRecid = RECID(Adresse) tAdresse.cSort = STRING(iPrior,'99') + REPLACE(ENTRY(1, F_Suchbegriffe, ' '), '*', '') iAnzAdr = iAnzAdr + 1. END. END. IF lJa AND iAnzAdr >= 20 THEN RETURN iAnzAdr. /* Auf matching Inhalt der eingegebenen Worte */ iPrior = iPrior + 1. aWorte = ''. nWorte = ''. FOR EACH tSuchFelder WHERE tSuchFelder.lGefunden = FALSE. IF tSuchFelder.iWort = 0 THEN DO: nWorte = nWorte + (IF nWorte = '' THEN '' ELSE ' ') + tSuchFelder.cSuch. NEXT. END. IF tSuchFelder.iSuch > 0 THEN nWorte = nWorte + (IF nWorte = '' THEN '' ELSE ' ') + TRIM(STRING(tSuchFelder.iSuch,'>>>>>>>>>>>9')). ELSE aWorte = aWorte + (IF aWorte = '' THEN '' ELSE ' ') + '*' + tSuchFelder.cSuch + '*'. END. lJa = FALSE. FOR EACH Adresse NO-LOCK WHERE Adresse.Firma = AdFirma AND ((lInaktiv) OR (NOT lInaktiv AND Adresse.Aktiv)) AND ((nWorte <> '' AND Adresse.WortIndex CONTAINS nWorte) OR (nWorte = '')) AND ((aWorte <> '' AND Adresse.WortIndex MATCHES aWorte) OR (aWorte = '')): lJa = TRUE. IF NOT DYNAMIC-FUNCTION('getAdresseSelektiert':U, Adresse.Knr ) THEN DO: CREATE tAdresse. BUFFER-COPY Adresse TO tAdresse ASSIGN tAdresse.iRecid = RECID(Adresse) tAdresse.cSort = STRING(iPrior,'99') + REPLACE(ENTRY(1, F_Suchbegriffe, ' '), '*', '') iAnzAdr = iAnzAdr + 1. END. END. IF lJa THEN RETURN iAnzAdr. /* Auf matching mit weniger Begriffen der eingegebenen Worte */ FOR EACH tSuchFelder WHERE tSuchFelder.iSuch > 0: DELETE tSuchFelder. END. DO WHILE TRUE: FIND LAST tSuchFelder WHERE tSuchFelder.iWort > 0 NO-ERROR. IF NOT AVAILABLE tSuchFelder THEN LEAVE. DELETE tSuchFelder. FIND FIRST tSuchFelder WHERE tSuchFelder.iWort > 0 NO-ERROR. IF NOT AVAILABLE tSuchFelder THEN LEAVE. iPrior = iPrior + 1. aWorte = ''. FOR EACH tSuchFelder WHERE tSuchFelder.lGefunden = FALSE. IF tSuchFelder.iWort = 0 THEN NEXT. aWorte = aWorte + (IF aWorte = '' THEN '' ELSE ' ') + '*' + tSuchFelder.cSuch + '*'. END. lJa = FALSE. FOR EACH Adresse NO-LOCK WHERE Adresse.Firma = AdFirma AND ((lInaktiv) OR (NOT lInaktiv AND Adresse.Aktiv)) AND ((nWorte <> '' AND Adresse.WortIndex CONTAINS nWorte) OR (nWorte = '')) AND ((aWorte <> '' AND Adresse.WortIndex MATCHES aWorte) OR (aWorte = '')): lJa = TRUE. IF NOT DYNAMIC-FUNCTION('getAdresseSelektiert':U, Adresse.Knr ) THEN DO: CREATE tAdresse. BUFFER-COPY Adresse TO tAdresse ASSIGN tAdresse.iRecid = RECID(Adresse) tAdresse.cSort = STRING(iPrior,'99') + REPLACE(ENTRY(1, F_Suchbegriffe, ' '), '*', '') iAnzAdr = iAnzAdr + 1. END. END. IF lJa THEN RETURN iAnzAdr. END. IF nWorte = '' THEN RETURN iAnzAdr. /* matches mit den eingegeben Zahlen (wenn vorhanden) */ iPrior = iPrior + 1. aWorte = ''. FOR EACH tSuchFelder WHERE tSuchFelder.iWort <> 0: DELETE tSuchFelder. END. DO ii = 1 TO NUM-ENTRIES(nWorte, ' '): xWort = ENTRY(ii, nWorte, ' '). FIND FIRST tSuchFelder WHERE tSuchFelder.cSuch = xWort NO-ERROR. IF AVAILABLE tSuchFelder THEN NEXT. CREATE tSuchFelder. ASSIGN tSuchFelder.iWort = ii tSuchFelder.iSuch = 0 tSuchFelder.cSuch = xWort tSuchFelder.lGefunden = FALSE. END. FOR EACH tSuchFelder: IF tSuchFelder.iWort = 0 THEN DO: nWorte = tSuchFelder.cSuch. NEXT. END. aWorte = aWorte + (IF aWorte = '' THEN '' ELSE ' ') + '*' + tSuchFelder.cSuch + '*'. END. IF aWorte = '' THEN RETURN iAnzAdr. lJa = FALSE. FOR EACH Adresse NO-LOCK WHERE Adresse.Firma = AdFirma AND ((lInaktiv) OR (NOT lInaktiv AND Adresse.Aktiv)) AND Adresse.WortIndex MATCHES aWorte: lJa = TRUE. IF NOT DYNAMIC-FUNCTION('getAdresseSelektiert':U, Adresse.Knr ) THEN DO: CREATE tAdresse. BUFFER-COPY Adresse TO tAdresse ASSIGN tAdresse.iRecid = RECID(Adresse) tAdresse.cSort = STRING(iPrior,'99') + REPLACE(ENTRY(1, F_Suchbegriffe, ' '), '*', '') iAnzAdr = iAnzAdr + 1. END. END. IF lJa THEN RETURN iAnzAdr. RETURN iAnzAdr. END FUNCTION. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION startQueryAuftrag gSuchenAdressen FUNCTION startQueryAuftrag RETURNS INTEGER ( /* parameter-definitions */ ) : /*------------------------------------------------------------------------------ Purpose: Notes: ------------------------------------------------------------------------------*/ DEF VAR iAnzAdr AS INT NO-UNDO. DEF VAR lJa AS LOG NO-UNDO. DEF VAR aWorte AS CHAR NO-UNDO. DEF VAR nWorte AS CHAR NO-UNDO. DEF VAR ii AS INT NO-UNDO. DEF VAR iKnrFak AS INT NO-UNDO. DEF BUFFER btAdresse FOR tAdresse. FOR EACH tSuchFelder NO-LOCK WHERE tSuchFelder.iSuch > 0 AND tSuchFelder.lGefunden = FALSE: FIND Debst NO-LOCK USE-INDEX Debst-k1 WHERE Debst.Firma = Firma AND Debst.Knr = tSuchFelder.iSuch AND Debst.Aktiv = TRUE NO-ERROR. IF NOT AVAILABLE Debst THEN NEXT. FIND Adresse NO-LOCK USE-INDEX Adresse-k1 WHERE Adresse.Firma = AdFirma AND Adresse.Knr = Debst.Knr NO-ERROR. IF NOT AVAILABLE Adresse THEN NEXT. IF NOT lInaktiv AND NOT Adresse.Aktiv THEN NEXT. ASSIGN iAnzAdr = iAnzAdr + 1 tSuchFelder.lGefunden = TRUE. CREATE tAdresse. BUFFER-COPY Adresse TO tAdresse ASSIGN tAdresse.iRecid = RECID(Adresse) tAdresse.cSort = STRING(iPrior,'99') + STRING(Adresse.Knr,'99999999'). END. FIND FIRST tSuchFelder NO-LOCK WHERE tSuchFelder.cSuch > '' NO-ERROR. IF NOT AVAILABLE tSuchFelder THEN RETURN iAnzAdr. /* Suchbegriff für Debitoren zu den Suchwörtern hinzufügen */ CREATE tSuchFelder. ASSIGN tSuchFelder.iWort = 0 tSuchFelder.iSuch = 0 tSuchFelder.cSuch = 'XDEBSTX' tSuchFelder.lGefunden = FALSE. iAnzAdr = DYNAMIC-FUNCTION('startQueryAdresse':U) NO-ERROR. FOR EACH tAdresse: FIND Debst NO-LOCK USE-INDEX Debst-k1 WHERE Debst.Firma = Firma AND Debst.Knr = tAdresse.Knr NO-ERROR. IF NOT AVAILABLE Debst THEN DO: DELETE tAdresse. iAnzAdr = iAnzAdr - 1. NEXT. END. IF Debst.KnrFak > 0 AND Debst.KnrFak <> Debst.Knr THEN NEXT. iKnrFak = Debst.Knr. FIND FIRST Debst USE-INDEX Debst-KnrFak WHERE Debst.Firma = Firma AND Debst.KnrFak = iKnrFak AND Debst.Aktiv NO-ERROR. IF NOT AVAILABLE Debst THEN NEXT. FIND LAST Artbw NO-LOCK USE-INDEX Artbw-k3 WHERE Artbw.Firma = Firma AND Artbw.Knr = tAdresse.Knr NO-ERROR. IF NOT AVAILABLE Artbw THEN DO: DELETE tAdresse. iAnzAdr = iAnzAdr - 1. NEXT. END. IF Artbw.Datum < (TODAY - 730) THEN DO: DELETE tAdresse. iAnzAdr = iAnzAdr - 1. NEXT. END. END. RETURN iAnzAdr. END FUNCTION. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION startQueryDebst gSuchenAdressen FUNCTION startQueryDebst RETURNS INTEGER ( /* parameter-definitions */ ) : /*------------------------------------------------------------------------------ Purpose: Notes: ------------------------------------------------------------------------------*/ DEF VAR iAnzAdr AS INT NO-UNDO. DEF VAR lJa AS LOG NO-UNDO. DEF VAR aWorte AS CHAR NO-UNDO. DEF VAR nWorte AS CHAR NO-UNDO. DEF VAR ii AS INT NO-UNDO. DEF VAR iKnrFak AS INT NO-UNDO. DEF BUFFER btAdresse FOR tAdresse. FOR EACH tSuchFelder NO-LOCK WHERE tSuchFelder.iSuch > 0 AND tSuchFelder.lGefunden = FALSE: FIND Debst NO-LOCK USE-INDEX Debst-k1 WHERE Debst.Firma = Firma AND Debst.Knr = tSuchFelder.iSuch AND Debst.Aktiv = TRUE NO-ERROR. IF NOT AVAILABLE Debst THEN NEXT. FIND Adresse NO-LOCK USE-INDEX Adresse-k1 WHERE Adresse.Firma = AdFirma AND Adresse.Knr = Debst.Knr NO-ERROR. IF NOT AVAILABLE Adresse THEN NEXT. IF NOT lInaktiv AND NOT Adresse.Aktiv THEN NEXT. ASSIGN iAnzAdr = iAnzAdr + 1 tSuchFelder.lGefunden = TRUE. CREATE tAdresse. BUFFER-COPY Adresse TO tAdresse ASSIGN tAdresse.iRecid = RECID(Adresse) tAdresse.cSort = STRING(iPrior,'99') + STRING(Adresse.Knr,'99999999'). END. FIND FIRST tSuchFelder NO-LOCK WHERE tSuchFelder.cSuch > '' NO-ERROR. IF NOT AVAILABLE tSuchFelder THEN RETURN iAnzAdr. /* Suchbegriff für Debitor zu den Suchwörtern hinzufügen */ CREATE tSuchFelder. ASSIGN tSuchFelder.iWort = 0 tSuchFelder.iSuch = 0 tSuchFelder.cSuch = 'XDEBSTX' tSuchFelder.lGefunden = FALSE. iAnzAdr = DYNAMIC-FUNCTION('startQueryAdresse':U) NO-ERROR. /* FOR EACH tAdresse: FIND Debst NO-LOCK USE-INDEX Debst-k1 WHERE Debst.Firma = Firma AND Debst.Knr = tAdresse.Knr NO-ERROR. IF NOT AVAILABLE Debst THEN DO: DELETE tAdresse. iAnzAdr = iAnzAdr - 1. NEXT. END. IF Debst.KnrFak > 0 AND Debst.KnrFak <> Debst.Knr THEN NEXT. iKnrFak = Debst.Knr. FIND FIRST Debst USE-INDEX Debst-KnrFak WHERE Debst.Firma = Firma AND Debst.KnrFak = iKnrFak AND Debst.Aktiv NO-ERROR. IF NOT AVAILABLE Debst THEN NEXT. FIND FIRST Artbw NO-LOCK USE-INDEX Artbw-k3 WHERE Artbw.Firma = Firma AND Artbw.Knr = tAdresse.Knr NO-ERROR. IF NOT AVAILABLE Artbw THEN DO: DELETE tAdresse. iAnzAdr = iAnzAdr - 1. NEXT. END. IF Artbw.Datum < (TODAY - 730) THEN DO: DELETE tAdresse. iAnzAdr = iAnzAdr - 1. NEXT. END. END. */ RETURN iAnzAdr. END FUNCTION. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION startQueryKundenbesuch gSuchenAdressen FUNCTION startQueryKundenbesuch RETURNS INTEGER ( /* parameter-definitions */ ) : /*------------------------------------------------------------------------------ Purpose: Notes: ------------------------------------------------------------------------------*/ DEF VAR iAnzAdr AS INT NO-UNDO. DEF VAR lJa AS LOG NO-UNDO. DEF VAR aWorte AS CHAR NO-UNDO. DEF VAR nWorte AS CHAR NO-UNDO. DEF VAR ii AS INT NO-UNDO. DEF VAR iKnrFak AS INT NO-UNDO. DEF BUFFER btAdresse FOR tAdresse. FOR EACH tSuchFelder NO-LOCK WHERE tSuchFelder.iSuch > 0 AND tSuchFelder.lGefunden = FALSE: IF iVertr < 999999 THEN DO: FIND Debst NO-LOCK USE-INDEX Debst-Vertr WHERE Debst.Firma = Firma AND Debst.Knr = tSuchFelder.iSuch AND Debst.Vertr = iVertr AND Debst.Aktiv = TRUE NO-ERROR. IF NOT AVAILABLE Debst THEN NEXT. END. FIND Adresse NO-LOCK USE-INDEX Adresse-k1 WHERE Adresse.Firma = AdFirma AND Adresse.Knr = tSuchFelder.iSuch NO-ERROR. IF NOT AVAILABLE Adresse THEN NEXT. IF NOT lInaktiv AND NOT Adresse.Aktiv THEN NEXT. ASSIGN iAnzAdr = iAnzAdr + 1 tSuchFelder.lGefunden = TRUE. CREATE tAdresse. BUFFER-COPY Adresse TO tAdresse ASSIGN tAdresse.iRecid = RECID(Adresse) tAdresse.cSort = STRING(iPrior,'99') + STRING(Adresse.Knr,'99999999'). END. FIND FIRST tSuchFelder NO-LOCK WHERE tSuchFelder.cSuch > '' NO-ERROR. IF NOT AVAILABLE tSuchFelder THEN RETURN iAnzAdr. /* Suchbegriff für Debitor zu den Suchwörtern hinzufügen */ CREATE tSuchFelder. ASSIGN tSuchFelder.iWort = 0 tSuchFelder.iSuch = 0 tSuchFelder.cSuch = 'XDEBSTX' tSuchFelder.lGefunden = FALSE. iAnzAdr = DYNAMIC-FUNCTION('startQueryAdresse':U) NO-ERROR. IF iVertr = 999999 THEN RETURN iAnzAdr. FOR EACH tAdresse: FIND Debst NO-LOCK USE-INDEX Debst-Vertr WHERE Debst.Firma = Firma AND Debst.Knr = tAdresse.Knr AND Debst.Vertr = iVertr NO-ERROR. IF NOT AVAILABLE Debst THEN DO: DELETE tAdresse. iAnzAdr = iAnzAdr - 1. NEXT. END. END. RETURN iAnzAdr. END FUNCTION. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION startQueryLieferant gSuchenAdressen FUNCTION startQueryLieferant RETURNS INTEGER ( /* parameter-definitions */ ) : /*------------------------------------------------------------------------------ Purpose: Notes: ------------------------------------------------------------------------------*/ DEF VAR iAnzAdr AS INT NO-UNDO. DEF VAR lJa AS LOG NO-UNDO. DEF VAR aWorte AS CHAR NO-UNDO. DEF VAR nWorte AS CHAR NO-UNDO. DEF VAR ii AS INT NO-UNDO. FOR EACH tSuchFelder NO-LOCK WHERE tSuchFelder.iSuch > 0 AND tSuchFelder.lGefunden = FALSE: FIND Liefst NO-LOCK USE-INDEX Liefst-k1 WHERE Liefst.Firma = Firma AND Liefst.Knr = tSuchFelder.iSuch AND Liefst.Aktiv = TRUE NO-ERROR. IF NOT AVAILABLE Liefst THEN NEXT. FIND Adresse NO-LOCK USE-INDEX Adresse-k1 WHERE Adresse.Firma = AdFirma AND Adresse.Knr = Liefst.Knr NO-ERROR. IF NOT AVAILABLE Adresse THEN NEXT. IF NOT lInaktiv AND NOT Adresse.Aktiv THEN NEXT. ASSIGN iAnzAdr = iAnzAdr + 1 tSuchFelder.lGefunden = TRUE. CREATE tAdresse. BUFFER-COPY Adresse TO tAdresse ASSIGN tAdresse.iRecid = RECID(Adresse) tAdresse.cSort = STRING(iPrior,'99') + STRING(Adresse.Knr,'99999999'). END. FIND FIRST tSuchFelder NO-LOCK WHERE tSuchFelder.cSuch > '' NO-ERROR. IF NOT AVAILABLE tSuchFelder THEN RETURN iAnzAdr. /* Suchbegriff für Lieferant zu den Suchwörtern hinzufügen */ CREATE tSuchFelder. ASSIGN tSuchFelder.iWort = 0 tSuchFelder.iSuch = 0 tSuchFelder.cSuch = 'XLIEFSTX' tSuchFelder.lGefunden = FALSE. iAnzAdr = DYNAMIC-FUNCTION('startQueryAdresse':U) NO-ERROR. RETURN iAnzAdr. END FUNCTION. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME