&ANALYZE-SUSPEND _VERSION-NUMBER AB_v10r12 GUI ADM2 &ANALYZE-RESUME /* Connected Databases anadat PROGRESS */ &Scoped-define WINDOW-NAME CURRENT-WINDOW &Scoped-define FRAME-NAME gArtikelSuchen {adecomm/appserv.i} /* Temp-Table and Buffer definitions */ DEFINE TEMP-TABLE tArtst NO-UNDO LIKE Artst FIELD Bez1 AS CHARACTER FIELD Bez2 AS CHARACTER FIELD KGeb_KBez AS CHARACTER FIELD VGeb_KBez AS CHARACTER FIELD iRecid AS RECID FIELD cSort AS CHARACTER FIELD iTreffer AS INTEGER FIELD WortIndex AS CHARACTER INDEX kWortIndex IS WORD-INDEX WortIndex. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CUSTOM _DEFINITIONS gArtikelSuchen /*------------------------------------------------------------------------ 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 --- */ DEFINE INPUT PARAMETER ipSuchbe AS CHARACTER NO-UNDO. DEFINE OUTPUT PARAMETER opRecid AS RECID NO-UNDO. /* Local Variable Definitions --- */ &SCOPED-DEFINE Tabelle tArtst &SCOPED-DEFINE Feld WordIndex { incl/dlgdefinition.i } { incl/dynbrwdefinition.i } DEFINE VARIABLE iKnr AS INTEGER INIT 0 NO-UNDO. DEFINE VARIABLE iLager AS INTEGER INIT 0 NO-UNDO. DEFINE VARIABLE lLager AS LOG INIT FALSE NO-UNDO. DEFINE VARIABLE MinNr AS INTEGER NO-UNDO. DEFINE VARIABLE cHerk AS CHARACTER NO-UNDO. DEFINE VARIABLE fAdmin AS LOG NO-UNDO. DEFINE VARIABLE iVertr AS INTEGER NO-UNDO. DEFINE VARIABLE lInaktiv AS LOG NO-UNDO. DEFINE VARIABLE cInstall AS CHARACTER NO-UNDO. DEFINE VARIABLE cSort AS CHARACTER INIT 'cSort' NO-UNDO. DEFINE VARIABLE lAufAb AS LOG INIT TRUE NO-UNDO. DEFINE VARIABLE cAufAb AS CHARACTER INIT '' NO-UNDO. DEFINE VARIABLE cFilterFeld AS CHARACTER NO-UNDO. DEFINE VARIABLE cFilterWert AS CHARACTER NO-UNDO. DEFINE VARIABLE dDatum AS DATE NO-UNDO. DEFINE VARIABLE cIndex AS CHARACTER NO-UNDO INIT ' '. DEFINE TEMP-TABLE tSuchFelder NO-UNDO FIELD iWort AS INTEGER FIELD iSuch AS INTEGER FIELD cSuch AS CHARACTER 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 gArtikelSuchen &Scoped-define BROWSE-NAME Browser_suchen /* Internal Tables (found by Frame, Query & Browse Queries) */ &Scoped-define INTERNAL-TABLES tArtst /* Definitions for BROWSE Browser_suchen */ &Scoped-define FIELDS-IN-QUERY-Browser_suchen tArtst.KGeb_KBez @ KGeb_KBez ~ tArtst.VGeb_Kbez @ VGeb_KBez tArtst.Artnr tArtst.Jahr tArtst.Inhalt ~ tArtst.Bez1 @ Bez1 tArtst.Bez2 @ Bez2 tArtst.Bestand tArtst.Listen_EP ~ tArtst.Alk_Gehalt tArtst.Ausverk tArtst.FremdNr tArtst.Suchbe &Scoped-define ENABLED-FIELDS-IN-QUERY-Browser_suchen &Scoped-define QUERY-STRING-Browser_suchen FOR EACH tArtst NO-LOCK INDEXED-REPOSITION &Scoped-define OPEN-QUERY-Browser_suchen OPEN QUERY Browser_suchen FOR EACH tArtst NO-LOCK INDEXED-REPOSITION. &Scoped-define TABLES-IN-QUERY-Browser_suchen tArtst &Scoped-define FIRST-TABLE-IN-QUERY-Browser_suchen tArtst /* Definitions for DIALOG-BOX gArtikelSuchen */ /* 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 getArtikelSelektiert gArtikelSuchen FUNCTION getArtikelSelektiert RETURNS LOGICAL ( ipArtnr AS INTEGER, ipInhalt AS INTEGER, ipJahr AS INTEGER ) FORWARD. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION-FORWARD openQuery gArtikelSuchen FUNCTION openQuery RETURNS LOGICAL ( /* parameter-definitions */ ) FORWARD. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION-FORWARD setKollonnenfarbe gArtikelSuchen FUNCTION setKollonnenfarbe RETURNS LOGICAL ( ipFarbe AS INTEGER ) FORWARD. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION-FORWARD startQueryArtikel gArtikelSuchen FUNCTION startQueryArtikel RETURNS INTEGER ( /* parameter-definitions */ ) FORWARD. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION-FORWARD startQueryArtlief gArtikelSuchen FUNCTION startQueryArtlief 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 TOOLTIP "nach Inhalt suchen ~"Inhalt=150~", Nach Jahrgang suchen ~"Jahr=2015~"" BGCOLOR 15 NO-UNDO. DEFINE RECTANGLE RECT-2 EDGE-PIXELS 2 GRAPHIC-EDGE NO-FILL SIZE 184 BY 19.52. /* Query definitions */ &ANALYZE-SUSPEND DEFINE QUERY Browser_suchen FOR tArtst SCROLLING. &ANALYZE-RESUME /* Browse definitions */ DEFINE BROWSE Browser_suchen &ANALYZE-SUSPEND _UIB-CODE-BLOCK _DISPLAY-FIELDS Browser_suchen gArtikelSuchen _STRUCTURED QUERY Browser_suchen NO-LOCK DISPLAY tArtst.KGeb_KBez @ KGeb_KBez COLUMN-LABEL "KGeb" FORMAT "x(10)":U tArtst.VGeb_Kbez @ VGeb_KBez COLUMN-LABEL "VGeb" FORMAT "x(10)":U tArtst.Artnr FORMAT "999999":U WIDTH 9 tArtst.Jahr FORMAT "9999":U WIDTH 6 tArtst.Inhalt FORMAT "9999":U tArtst.Bez1 @ Bez1 COLUMN-LABEL "Bezeichnung - 1" FORMAT "x(30)":U WIDTH 35 tArtst.Bez2 @ Bez2 COLUMN-LABEL "Bezeichnung - 2" FORMAT "x(30)":U WIDTH 35 tArtst.Bestand FORMAT "zzzzz,zz9-":U WIDTH 10 tArtst.Listen_EP COLUMN-LABEL "Listen-EP" FORMAT "z,zz9.999":U WIDTH 10 tArtst.Alk_Gehalt COLUMN-LABEL "Alk-%" FORMAT "zz9.999":U WIDTH 10 tArtst.Ausverk FORMAT "9":U WIDTH 8 tArtst.FremdNr COLUMN-LABEL "Alte Nummer" FORMAT "XXXXXX.XXXX.XXXX":U WIDTH 23 tArtst.Suchbe COLUMN-LABEL "Suchbegriff" FORMAT "x(15)":U /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME WITH NO-ROW-MARKERS SEPARATORS SIZE 180 BY 17.14. /* ************************ Frame Definitions *********************** */ DEFINE FRAME gArtikelSuchen F_Suchbegriffe AT ROW 2 COL 17.8 COLON-ALIGNED WIDGET-ID 4 Browser_suchen AT ROW 3.38 COL 5 WIDGET-ID 200 RECT-2 AT ROW 1.48 COL 3 WIDGET-ID 2 SPACE(1.99) SKIP(0.47) WITH VIEW-AS DIALOG-BOX KEEP-TAB-ORDER SIDE-LABELS NO-UNDERLINE THREE-D SCROLLABLE TITLE "Artikel 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: tArtst T "?" NO-UNDO AnaDat Artst ADDITIONAL-FIELDS: FIELD Bez1 AS CHAR FIELD Bez2 AS CHAR FIELD KGeb_KBez AS CHAR FIELD VGeb_KBez AS CHAR FIELD iRecid AS RECID FIELD cSort AS CHAR FIELD iTreffer AS INT FIELD WortIndex AS CHAR INDEX kWortIndex IS WORD-INDEX WortIndex END-FIELDS. END-TABLES. */ &ANALYZE-RESUME _END-PROCEDURE-SETTINGS &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CUSTOM _INCLUDED-LIB gArtikelSuchen /* ************************* 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 gArtikelSuchen FRAME-NAME */ /* BROWSE-TAB Browser_suchen F_Suchbegriffe gArtikelSuchen */ ASSIGN FRAME gArtikelSuchen:SCROLLABLE = FALSE FRAME gArtikelSuchen:HIDDEN = TRUE. ASSIGN Browser_suchen:POPUP-MENU IN FRAME gArtikelSuchen = MENU POPUP-MENU-Browser_suchen:HANDLE Browser_suchen:COLUMN-RESIZABLE IN FRAME gArtikelSuchen = TRUE Browser_suchen:COLUMN-MOVABLE IN FRAME gArtikelSuchen = 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 = "tArtst" _Options = "NO-LOCK INDEXED-REPOSITION" _TblOptList = ",," _FldNameList[1] > "_" "tArtst.KGeb_KBez @ KGeb_KBez" "KGeb" "x(10)" ? ? ? ? ? ? ? no ? no no ? yes no no "U" "" "" "" "" "" "" 0 no 0 no no _FldNameList[2] > "_" "tArtst.VGeb_Kbez @ VGeb_KBez" "VGeb" "x(10)" ? ? ? ? ? ? ? no ? no no ? yes no no "U" "" "" "" "" "" "" 0 no 0 no no _FldNameList[3] > Temp-Tables.tArtst.Artnr "tArtst.Artnr" ? ? "integer" ? ? ? ? ? ? no ? no no "9" yes no no "U" "" "" "" "" "" "" 0 no 0 no no _FldNameList[4] > Temp-Tables.tArtst.Jahr "tArtst.Jahr" ? ? "integer" ? ? ? ? ? ? no ? no no "6" yes no no "U" "" "" "" "" "" "" 0 no 0 no no _FldNameList[5] = Temp-Tables.tArtst.Inhalt _FldNameList[6] > "_" "tArtst.Bez1 @ Bez1" "Bezeichnung - 1" "x(30)" ? ? ? ? ? ? ? no ? no no "35" yes no no "U" "" "" "" "" "" "" 0 no 0 no no _FldNameList[7] > "_" "tArtst.Bez2 @ Bez2" "Bezeichnung - 2" "x(30)" ? ? ? ? ? ? ? no ? no no "35" yes no no "U" "" "" "" "" "" "" 0 no 0 no no _FldNameList[8] > Temp-Tables.tArtst.Bestand "tArtst.Bestand" ? ? "integer" ? ? ? ? ? ? no ? no no "10" yes no no "U" "" "" "" "" "" "" 0 no 0 no no _FldNameList[9] > Temp-Tables.tArtst.Listen_EP "tArtst.Listen_EP" "Listen-EP" ? "decimal" ? ? ? ? ? ? no ? no no "10" yes no no "U" "" "" "" "" "" "" 0 no 0 no no _FldNameList[10] > Temp-Tables.tArtst.Alk_Gehalt "tArtst.Alk_Gehalt" "Alk-%" ? "decimal" ? ? ? ? ? ? no ? no no "10" yes no no "U" "" "" "" "" "" "" 0 no 0 no no _FldNameList[11] > Temp-Tables.tArtst.Ausverk "tArtst.Ausverk" ? "9" "integer" ? ? ? ? ? ? no ? no no "8" yes no no "U" "" "" "" "" "" "" 0 no 0 no no _FldNameList[12] > Temp-Tables.tArtst.FremdNr "tArtst.FremdNr" "Alte Nummer" "XXXXXX.XXXX.XXXX" "character" ? ? ? ? ? ? no ? no no "23" yes no no "U" "" "" "" "" "" "" 0 no 0 no no _FldNameList[13] > Temp-Tables.tArtst.Suchbe "tArtst.Suchbe" "Suchbegriff" ? "character" ? ? ? ? ? ? no ? no no ? yes no no "U" "" "" "" "" "" "" 0 no 0 no no _Query is NOT OPENED */ /* BROWSE Browser_suchen */ &ANALYZE-RESUME &ANALYZE-SUSPEND _QUERY-BLOCK DIALOG-BOX gArtikelSuchen /* Query rebuild information for DIALOG-BOX gArtikelSuchen _Options = "SHARE-LOCK" _Query is NOT OPENED */ /* DIALOG-BOX gArtikelSuchen */ &ANALYZE-RESUME /* ************************ Control Triggers ************************ */ &Scoped-define SELF-NAME gArtikelSuchen &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL gArtikelSuchen gArtikelSuchen ON END-ERROR OF FRAME gArtikelSuchen /* Artikel suchen */ DO: opRecid = ?. RUN ENDE. RETURN NO-APPLY. END. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL gArtikelSuchen gArtikelSuchen ON WINDOW-CLOSE OF FRAME gArtikelSuchen /* Artikel 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 gArtikelSuchen ON END-ERROR OF Browser_suchen IN FRAME gArtikelSuchen DO: APPLY 'ENTRY' TO F_Suchbegriffe. RETURN NO-APPLY. END. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL Browser_suchen gArtikelSuchen ON LEFT-MOUSE-DBLCLICK OF Browser_suchen IN FRAME gArtikelSuchen 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 = tArtst.iRecid. RUN ENDE. RETURN NO-APPLY. END. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL Browser_suchen gArtikelSuchen ON RETURN OF Browser_suchen IN FRAME gArtikelSuchen 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 = tArtst.iRecid. RUN ENDE. RETURN NO-APPLY. END. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL Browser_suchen gArtikelSuchen ON ROW-DISPLAY OF Browser_suchen IN FRAME gArtikelSuchen DO: DEFINE VARIABLE iFarbe AS INTEGER NO-UNDO. iFarbe = 15. IF tArtst.Artnr > 0 THEN DO: iFarbe = 15. IF NOT tArtst.Lager AND cInstall <> 'oswald' THEN iFarbe = 11. IF tArtst.Ausverk = 8 THEN iFarbe = 13. /* Beschaffungsartikel */ IF tArtst.Ausverk = 9 THEN iFarbe = 12. /* Ausverkauft */ IF tArtst.Aktiv = FALSE THEN iFarbe = 12. /* gelöscht/inaktiv */ END. DYNAMIC-FUNCTION('setKollonnenfarbe':U, iFarbe) NO-ERROR. END. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL Browser_suchen gArtikelSuchen ON START-SEARCH OF Browser_suchen IN FRAME gArtikelSuchen 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 gArtikelSuchen ON RETURN OF F_Suchbegriffe IN FRAME gArtikelSuchen /* suchen nach */ DO: ASSIGN F_Suchbegriffe. SESSION:SET-WAIT-STATE('General'). RUN START_QUERY ( SELF:SCREEN-VALUE). SESSION:SET-WAIT-STATE(''). RETURN NO-APPLY. END. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &UNDEFINE SELF-NAME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CUSTOM _MAIN-BLOCK gArtikelSuchen /* *************************** Main Block *************************** */ ASSIGN cHerk = '' iKnr = 0 cIndex = ' '. IF NUM-ENTRIES(ipSuchbe, ';') > 1 THEN DO: cHerk = ENTRY(1, ipSuchbe, ';'). ipSuchbe = ENTRY(2, ipSuchbe, ';'). END. IF cHerk = '' THEN DO: IF ipSuchbe <> '' AND NUM-ENTRIES(ipSuchbe, ',') > 1 THEN DO: cHerk = ipSuchbe. ipSuchbe = ''. END. END. IF cHerk <> '' THEN DO: IF cHerk BEGINS 'BEST' THEN DO: ASSIGN iKnr = INTEGER(ENTRY(2, cHerk, ',')) cHerk = ENTRY(1, cHerk, ','). END. IF cHerk BEGINS 'VERKAUF' THEN DO: ASSIGN iKnr = INTEGER(ENTRY(2, cHerk, ',')) dDatum = DATE (ENTRY(3, cHerk, ',')) cHerk = ENTRY(1, cHerk, ','). END. IF cHerk BEGINS 'INVENTAR' THEN DO: ASSIGN iLager = INTEGER(ENTRY(2, cHerk, ',')) lLager = TRUE cHerk = ENTRY(1, cHerk, ','). END. END. IF cHerk = '' THEN cHerk = 'ART'. MinNr = DYNAMIC-FUNCTION('getMinArtnr':U) NO-ERROR. IF MinNr > 1 THEN MinNr = INTEGER('1' + FILL('0', MinNr - 1)). cInstall = DYNAMIC-FUNCTION('getInstallation':U) NO-ERROR. { incl/dlgmainblock.i } { incl/dynbrwmainblock.i } { incl/dynbrwinternproc.i } F_Suchbegriffe = ipSuchbe. opRecid = ?. fAdmin = DYNAMIC-FUNCTION('getAdmin':U ) NO-ERROR. {src/adm2/dialogmn.i} /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME /* ********************** Internal Procedures *********************** */ &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE adm-create-objects gArtikelSuchen _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 gArtikelSuchen 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 gArtikelSuchen _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 gArtikelSuchen. END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE enableObject gArtikelSuchen PROCEDURE enableObject : /*------------------------------------------------------------------------------ Purpose: Super Override Parameters: Notes: ------------------------------------------------------------------------------*/ cSort = 'Bez1'. { incl/dlgenableobject.i } END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE enable_UI gArtikelSuchen _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 gArtikelSuchen. ENABLE RECT-2 F_Suchbegriffe Browser_suchen WITH FRAME gArtikelSuchen. VIEW FRAME gArtikelSuchen. {&OPEN-BROWSERS-IN-QUERY-gArtikelSuchen} END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE ENDE gArtikelSuchen PROCEDURE ENDE : /*------------------------------------------------------------------------------ Purpose: Parameters: Notes: ------------------------------------------------------------------------------*/ { incl/dlgende.i } END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE INAKTIVE_EINAUS gArtikelSuchen PROCEDURE INAKTIVE_EINAUS : /*------------------------------------------------------------------------------ Purpose: Parameters: Notes: ------------------------------------------------------------------------------*/ DEFINE VARIABLE cString AS CHARACTER NO-UNDO. DO WITH FRAME {&FRAME-NAME}: cString = F_Suchbegriffe:SCREEN-VALUE. lInaktiv = NOT lInaktiv. DYNAMIC-FUNCTION('setAnzeigeArtikelSucheInaktiv':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 gArtikelSuchen PROCEDURE initializeObject : /*------------------------------------------------------------------------------ Purpose: Super Override Parameters: Notes: ------------------------------------------------------------------------------*/ DEFINE VARIABLE cName AS CHARACTER NO-UNDO. DEFINE VARIABLE xWhere AS CHARACTER 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('getAnzeigeArtikelSucheInaktiv':U) NO-ERROR. 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_PROC gArtikelSuchen PROCEDURE OPENQUERY_PROC : /*------------------------------------------------------------------------------ Purpose: Parameters: Notes: ------------------------------------------------------------------------------*/ DEFINE VARIABLE xWhere AS CHARACTER NO-UNDO. DEFINE VARIABLE hBuffer AS HANDLE NO-UNDO. DEFINE VARIABLE cFeld AS CHARACTER NO-UNDO. DEFINE VARIABLE hFeld AS HANDLE NO-UNDO. DEFINE VARIABLE cWert AS CHARACTER NO-UNDO. DEFINE VARIABLE ix AS INTEGER NO-UNDO. hBuffer = hbQuery:GET-BUFFER-HANDLE(1). xWhere = SUBSTITUTE('FOR EACH &1 NO-LOCK ', cqTabelle). DO ix = 1 TO NUM-ENTRIES(cFilterFeld, ','): cFeld = ENTRY(ix, cFilterFeld, ','). IF cFeld = 'CLEAR' THEN DO: cFilterFeld = ''. cFilterWert = ''. LEAVE. END. hFeld = hBuffer:BUFFER-FIELD(cFeld). CASE hFeld:TYPE. WHEN 'INTEGER' THEN cWert = ENTRY(ix, cFilterWert, ','). WHEN 'DECIMAL' THEN cWert = ENTRY(ix, cFilterWert, ','). WHEN 'DATE' THEN cWert = STRING(DATE(ENTRY(ix, cFilterWert, ','))). WHEN 'LOGICAL' THEN cWert = (IF ENTRY(ix, cFilterWert, ',') BEGINS 'n' THEN 'FALSE' ELSE 'TRUE'). OTHERWISE cWert = QUOTER(ENTRY(ix, cFilterWert, ',')). END. xWhere = xWhere + (IF ix = 1 THEN 'WHERE ' ELSE ' AND ') + SUBSTITUTE('&1.&2 = &3 ', cqTabelle, cFeld, cWert). END. xWhere = xWhere + SUBSTITUTE(' BY &1 &2 ', 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_FILTER gArtikelSuchen PROCEDURE SET_FILTER : /*------------------------------------------------------------------------------ Purpose: Parameters: Notes: ------------------------------------------------------------------------------*/ { incl/datsetfilter.i } END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE SET_SORT gArtikelSuchen PROCEDURE SET_SORT : /*------------------------------------------------------------------------------ Purpose: Parameters: Notes: ------------------------------------------------------------------------------*/ DEFINE INPUT PARAMETER ipSort AS CHARACTER NO-UNDO. IF ipSort = cSort THEN lAufAb = NOT lAufAb. cSort = ipSort. cAufAb = (IF lAufAb THEN '' ELSE 'DESCENDING'). RUN OPENQUERY_PROC. END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE SPEZ_SUCHEN gArtikelSuchen PROCEDURE SPEZ_SUCHEN: /*------------------------------------------------------------------------------ Purpose: Notes: ------------------------------------------------------------------------------*/ DEFINE INPUT PARAMETER ipcSuchbe AS CHARACTER NO-UNDO. DEFINE VARIABLE iWert AS INTEGER NO-UNDO. DEFINE VARIABLE cArt AS CHARACTER NO-UNDO. DEFINE VARIABLE iAnzArt AS INTEGER NO-UNDO. DEFINE VARIABLE iPrior AS INTEGER NO-UNDO INIT 0. cArt = ENTRY(1, ipcSuchbe, '='). iWert = INTEGER(ENTRY(2, ipcSuchbe, '=')) NO-ERROR. IF ERROR-STATUS:ERROR THEN RETURN 'ERROR'. iAnzArt = 0. EMPTY TEMP-TABLE tArtst. FOR EACH Artst NO-LOCK WHERE Artst.Firma = Firma AND ((cArt = 'Inhalt' AND Artst.Inhalt = iWert) OR (cArt = 'Jahr' AND Artst.Jahr = iWert) ), FIRST ArtBez OF Artst: CREATE tArtst. BUFFER-COPY Artst TO tArtst ASSIGN tArtst.iRecid = RECID(Artst) tArtst.Bez1 = Artbez.Bez1 tArtst.Bez2 = Artbez.Bez2 tArtst.cSort = STRING(iPrior,'99') + STRING(Artst.Artnr ,'99999999') + STRING(Artst.Inhalt,'9999') + STRING(Artst.Jahr ,'9999'). IF iAnzArt >= 200 THEN LEAVE. END. END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE START_QUERY gArtikelSuchen PROCEDURE START_QUERY : /*------------------------------------------------------------------------------ Purpose: Parameters: Notes: ------------------------------------------------------------------------------*/ DEFINE INPUT PARAMETER ipWorte AS CHARACTER NO-UNDO. DEFINE VARIABLE xWort AS CHARACTER NO-UNDO. DEFINE VARIABLE aWorte AS CHARACTER NO-UNDO. DEFINE VARIABLE yy AS INTEGER NO-UNDO. DEFINE VARIABLE Zahl AS INTEGER NO-UNDO. DEFINE VARIABLE iKnrFak AS INTEGER NO-UNDO. DEFINE VARIABLE iAnzArt AS INTEGER NO-UNDO. DEFINE BUFFER bArtbw FOR Artbw. EMPTY TEMP-TABLE tArtst. EMPTY TEMP-TABLE tSuchFelder. ipWorte = REPLACE(ipWorte, '*', ''). IF ipWorte BEGINS 'INHALT=' OR ipWorte BEGINS 'JAHR=' THEN DO: RUN SPEZ_SUCHEN ( ipWorte ). IF RETURN-VALUE = 'ERROR' THEN DO WITH FRAME {&FRAME-NAME}: APPLY 'ENTRY' TO F_Suchbegriffe. RETURN NO-APPLY. END. END. ELSE DO: 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: DO WHILE Zahl < MinNr AND yy = 1: Zahl = Zahl * 10. END. tSuchFelder.iSuch = Zahl. 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 'ART' THEN iAnzArt = DYNAMIC-FUNCTION('startQueryArtikel':U ). WHEN 'BEST' THEN iAnzArt = DYNAMIC-FUNCTION('startQueryArtlief':U ). WHEN 'INVENTAR' THEN iAnzArt = DYNAMIC-FUNCTION('startQueryArtikel':U ). WHEN 'VERKAUF' THEN iAnzArt = DYNAMIC-FUNCTION('startQueryArtikel':U ). END. END. FOR EACH tArtst BREAK BY tArtst.Artnr BY tArtst.Inhalt BY tArtst.Jahr: IF NOT FIRST-OF ( tArtst.Jahr ) THEN DO: DELETE tArtst. NEXT. END. IF cHerk BEGINS 'VERKAUF' THEN DO: FIND FIRST bArtbw NO-LOCK WHERE bArtbw.Firma = Firma AND bArtbw.Knr = iKnr AND bArtbw.Artnr = tArtst.Artnr AND bArtbw.Inhalt = tArtst.Inhalt AND bArtbw.Jahr = tArtst.Jahr AND bArtbw.Datum >= dDatum NO-ERROR. IF NOT AVAILABLE bArtbw THEN DO: DELETE tArtst. NEXT. END. END. FIND KGebinde NO-LOCK USE-INDEX KGebinde-k1 WHERE KGebinde.Firma = tArtst.Firma AND KGebinde.Geb_Cd = tArtst.KGeb_Cd NO-ERROR. FIND VGebinde NO-LOCK USE-INDEX VGebinde-k1 WHERE VGebinde.Firma = tArtst.Firma AND VGebinde.Geb_Cd = tArtst.VGeb_Cd NO-ERROR. ASSIGN tArtst.KGeb_KBez = (IF AVAILABLE KGebinde THEN KGebinde.KBez ELSE '??????') tArtst.VGeb_KBez = (IF AVAILABLE VGebinde THEN VGebinde.KBez ELSE '??????'). IF lLager THEN DO: FIND FIRST ArtLager NO-LOCK WHERE ArtLager.Firma = tArtst.Firma AND ArtLager.Artnr = tArtst.Artnr AND ArtLager.Inhalt = tArtst.Inhalt AND ArtLager.Jahr = tArtst.Jahr AND ArtLager.Lager = iLager NO-ERROR. IF NOT AVAILABLE ArtLager THEN DO: DELETE tArtst. iAnzArt = iAnzArt - 1. NEXT. END. END. END. opRecid = ?. RUN OPENQUERY_PROC. END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME /* ************************ Function Implementations ***************** */ &ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION getArtikelSelektiert gArtikelSuchen FUNCTION getArtikelSelektiert RETURNS LOGICAL ( ipArtnr AS INTEGER, ipInhalt AS INTEGER, ipJahr AS INTEGER ) : /*------------------------------------------------------------------------------ Purpose: Notes: ------------------------------------------------------------------------------*/ FIND FIRST tArtst NO-LOCK WHERE tArtst.Firma = Firma AND tArtst.Artnr = ipArtnr AND tArtst.Inhalt = ipInhalt AND tArtst.Jahr = ipJahr NO-ERROR. IF AVAILABLE tArtst THEN RETURN TRUE. RETURN FALSE. END FUNCTION. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION openQuery gArtikelSuchen FUNCTION openQuery RETURNS LOGICAL ( /* parameter-definitions */ ) : /*------------------------------------------------------------------------------ Purpose: Notes: ------------------------------------------------------------------------------*/ RUN OPENQUERY_PROC. RETURN TRUE. END FUNCTION. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION setKollonnenfarbe gArtikelSuchen FUNCTION setKollonnenfarbe RETURNS LOGICAL ( ipFarbe AS INTEGER ) : /*------------------------------------------------------------------------------ Purpose: Notes: ------------------------------------------------------------------------------*/ { incl/brwsetzeilenfarbe.i } END FUNCTION. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION startQueryArtikel gArtikelSuchen FUNCTION startQueryArtikel RETURNS INTEGER ( /* parameter-definitions */ ) : /*------------------------------------------------------------------------------ Purpose: Notes: ------------------------------------------------------------------------------*/ DEFINE VARIABLE iAnzArt AS INTEGER NO-UNDO. DEFINE VARIABLE iPrior AS INTEGER INIT 0 NO-UNDO. DEFINE VARIABLE lJa AS LOG NO-UNDO. DEFINE VARIABLE aWorte AS CHARACTER NO-UNDO. DEFINE VARIABLE nWorte AS CHARACTER NO-UNDO. DEFINE VARIABLE xWort AS CHARACTER NO-UNDO. DEFINE VARIABLE ii AS INTEGER NO-UNDO. DEFINE VARIABLE iBisAnr AS INTEGER NO-UNDO. cSort = ''. /* Auf Artikelnummern */ iPrior = iPrior + 1. FOR EACH tSuchFelder NO-LOCK WHERE tSuchFelder.iSuch > 0 AND tSuchFelder.lGefunden = FALSE: CASE cInstall: WHEN 'OSWALD' OR WHEN 'LaTorre' THEN iBisAnr = 999999. OTHERWISE iBisAnr = tSuchFelder.iSuch. END. cSort = 'cSort'. FOR EACH Artst NO-LOCK USE-INDEX Artst-k1 WHERE Artst.Firma = Firma AND Artst.Artnr >= tSuchFelder.iSuch AND Artst.Artnr <= iBisAnr : IF NOT lInaktiv THEN DO: IF NOT Artst.Aktiv THEN NEXT. IF Artst.Ausverk = 9 THEN NEXT. END. FIND FIRST Artbez NO-LOCK OF Artst NO-ERROR. IF NOT AVAILABLE Artbez THEN NEXT. IF cIndex <> ' ' THEN DO: ii = INDEX(Artbez.WortIndex, cIndex). IF ii = 0 THEN NEXT. END. ASSIGN iAnzArt = iAnzArt + 1 tSuchFelder.lGefunden = TRUE. CREATE tArtst. BUFFER-COPY Artst TO tArtst ASSIGN tArtst.iRecid = RECID(Artst) tArtst.Bez1 = Artbez.Bez1 tArtst.Bez2 = Artbez.Bez2 tArtst.cSort = STRING(iPrior,'99') + STRING(Artst.Artnr ,'99999999') + STRING(Artst.Inhalt,'9999') + STRING(Artst.Jahr ,'9999'). IF iAnzArt >= 200 THEN LEAVE. END. END. IF iAnzArt >= 200 THEN RETURN iAnzArt. DO WHILE TRUE: /* OSWALD-SPEZIALFALL (Suchen nach Suchbegriff) */ IF cInstall <> 'OSWALD' AND cInstall <> 'LaTorre' THEN LEAVE. iPrior = iPrior + 1. lJa = FALSE. aWorte = ''. FOR EACH tSuchFelder WHERE tSuchFelder.lGefunden = FALSE AND tSuchFelder.iSuch = 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 Artst NO-LOCK USE-INDEX Artst-k2 WHERE Artst.Firma = Firma AND ((lInaktiv) OR (NOT lInaktiv AND Artst.Aktiv AND Artst.Ausverk < 9)) AND Artst.Suchbe BEGINS aWorte, FIRST Artbez NO-LOCK OF Artst : IF NOT AVAILABLE Artbez THEN NEXT. IF cIndex <> ' ' THEN DO: ii = INDEX(Artbez.WortIndex, cIndex). IF ii = 0 THEN NEXT. END. IF NOT DYNAMIC-FUNCTION('getArtikelSelektiert':U, Artst.Artnr, Artst.Inhalt, Artst.Jahr ) THEN DO: ASSIGN iAnzArt = iAnzArt + 1 lJa = TRUE. CREATE tArtst. BUFFER-COPY Artst TO tArtst ASSIGN tArtst.iRecid = RECID(Artst) tArtst.Bez1 = Artbez.Bez1 tArtst.Bez2 = Artbez.Bez2 tArtst.cSort = STRING(iPrior,'99') + STRING(Artst.Artnr ,'99999999') + STRING(Artst.Inhalt,'9999') + STRING(Artst.Jahr ,'9999'). END. END. IF cSort = '' THEN cSort = 'Bez1'. IF lJa THEN RETURN iAnzArt. LEAVE. 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 iAnzArt. lJa = FALSE. cSort = (IF cSort = '' THEN 'Bez1' ELSE 'cSort'). GENAU: FOR EACH Artbez NO-LOCK WHERE Artbez.Firma = Firma AND Artbez.Sprcd = 1 AND Artbez.WortIndex CONTAINS aWorte AND INDEX(Artbez.Wortindex, cIndex) > 0, FIRST Artst NO-LOCK USE-INDEX Artst-k1 WHERE Artst.Firma = Artbez.Firma AND Artst.Artnr = Artbez.Artnr AND Artst.Inhalt = Artbez.Inhalt AND Artst.Jahr = Artbez.Jahr AND ((lInaktiv) OR (NOT lInaktiv AND Artst.Aktiv AND Artst.Ausverk < 9)) : DO ii = 1 TO NUM-ENTRIES(aWorte, ' '): xWort = ENTRY(ii, aWorte, ' '). IF LOOKUP(xWort, Artbez.WortIndex, ' ') = 0 THEN NEXT GENAU. END. lJa = TRUE. IF NOT DYNAMIC-FUNCTION('getArtikelSelektiert':U, Artst.Artnr, Artst.Inhalt, Artst.Jahr ) THEN DO: CREATE tArtst. BUFFER-COPY Artst TO tArtst ASSIGN tArtst.iRecid = RECID(Artst) tArtst.Bez1 = Artbez.Bez1 tArtst.Bez2 = Artbez.Bez2 tArtst.cSort = STRING(iPrior,'99') + Artst.Suchbe + STRING(Artst.Artnr ,'99999999') + STRING(Artst.Inhalt,'9999') + STRING(Artst.Jahr ,'9999'). iAnzArt = iAnzArt + 1. END. END. IF iAnzArt >= 100 THEN RETURN iAnzArt. /* IF LENGTH(cIndex) > 2 THEN RETURN iAnzArt.*/ /* Auf matching Inhalt mit einem folgenden "*" 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 Artbez NO-LOCK WHERE Artbez.Firma = Firma AND Artbez.Sprcd = 1 AND ((nWorte <> '' AND Artbez.WortIndex CONTAINS nWorte) OR (nWorte = '')) AND ((aWorte <> '' AND Artbez.WortIndex MATCHES aWorte) OR (aWorte = '')), FIRST Artst NO-LOCK USE-INDEX Artst-k1 WHERE Artst.Firma = Artbez.Firma AND Artst.Artnr = Artbez.Artnr AND Artst.Inhalt = Artbez.Inhalt AND Artst.Jahr = Artbez.Jahr AND ((lInaktiv) OR (NOT lInaktiv AND Artst.Aktiv AND Artst.Ausverk < 9)) : lJa = TRUE. IF NOT DYNAMIC-FUNCTION('getArtikelSelektiert':U, Artst.Artnr, Artst.Inhalt, Artst.Jahr ) THEN DO: CREATE tArtst. BUFFER-COPY Artst TO tArtst ASSIGN tArtst.iRecid = RECID(Artst) tArtst.Bez1 = Artbez.Bez1 tArtst.Bez2 = Artbez.Bez2 tArtst.cSort = STRING(iPrior,'99') + Artst.Suchbe + STRING(Artst.Artnr ,'99999999') + STRING(Artst.Inhalt,'9999') + STRING(Artst.Jahr ,'9999'). iAnzArt = iAnzArt + 1. END. END. IF iAnzArt >= 100 THEN RETURN iAnzArt. IF lJa THEN RETURN iAnzArt. */ /* 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 Artbez NO-LOCK WHERE Artbez.Firma = Firma AND Artbez.Sprcd = 1 AND ((nWorte <> '' AND Artbez.WortIndex CONTAINS nWorte) OR (nWorte = '')) AND ((aWorte <> '' AND Artbez.WortIndex MATCHES aWorte) OR (aWorte = '')) AND INDEX(Artbez.Wortindex, cIndex) > 0, FIRST Artst NO-LOCK USE-INDEX Artst-k1 WHERE Artst.Firma = Artbez.Firma AND Artst.Artnr = Artbez.Artnr AND Artst.Inhalt = Artbez.Inhalt AND Artst.Jahr = Artbez.Jahr AND ((lInaktiv) OR (NOT lInaktiv AND Artst.Aktiv AND Artst.Ausverk < 9)) : lJa = TRUE. IF NOT DYNAMIC-FUNCTION('getArtikelSelektiert':U, Artst.Artnr, Artst.Inhalt, Artst.Jahr ) THEN DO: CREATE tArtst. BUFFER-COPY Artst TO tArtst ASSIGN tArtst.iRecid = RECID(Artst) tArtst.Bez1 = Artbez.Bez1 tArtst.Bez2 = Artbez.Bez2 tArtst.cSort = STRING(iPrior,'99') + Artst.Suchbe + STRING(Artst.Artnr ,'99999999') + STRING(Artst.Inhalt,'9999') + STRING(Artst.Jahr ,'9999'). iAnzArt = iAnzArt + 1. END. END. IF lJa THEN RETURN iAnzArt. /* 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 Artbez NO-LOCK WHERE Artbez.Firma = Firma AND Artbez.Sprcd = 1 AND ((nWorte <> '' AND Artbez.WortIndex CONTAINS nWorte) OR (nWorte = '')) AND ((aWorte <> '' AND Artbez.WortIndex MATCHES aWorte) OR (aWorte = '')) AND INDEX(Artbez.Wortindex, cIndex) > 0, FIRST Artst NO-LOCK USE-INDEX Artst-k1 WHERE Artst.Firma = Artbez.Firma AND Artst.Artnr = Artbez.Artnr AND Artst.Inhalt = Artbez.Inhalt AND Artst.Jahr = Artbez.Jahr AND ((lInaktiv) OR (NOT lInaktiv AND Artst.Aktiv AND Artst.Ausverk < 9)) : lJa = TRUE. IF NOT DYNAMIC-FUNCTION('getArtikelSelektiert':U, Artst.Artnr, Artst.Inhalt, Artst.Jahr ) THEN DO: CREATE tArtst. BUFFER-COPY Artst TO tArtst ASSIGN tArtst.iRecid = RECID(Artst) tArtst.Bez1 = Artbez.Bez1 tArtst.Bez2 = Artbez.Bez2 tArtst.cSort = STRING(iPrior,'99') + Artst.Suchbe + STRING(Artst.Artnr ,'99999999') + STRING(Artst.Inhalt,'9999') + STRING(Artst.Jahr ,'9999'). iAnzArt = iAnzArt + 1. END. IF lJa THEN RETURN iAnzArt. END. END. IF nWorte = '' THEN RETURN iAnzArt. /* 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 iAnzArt. lJa = FALSE. FOR EACH Artbez NO-LOCK WHERE Artbez.Firma = Firma AND Artbez.Sprcd = 1 AND Artbez.WortIndex MATCHES aWorte AND INDEX(Artbez.Wortindex, cIndex) > 0, FIRST Artst NO-LOCK USE-INDEX Artst-k1 WHERE Artst.Firma = Artbez.Firma AND Artst.Artnr = Artbez.Artnr AND Artst.Inhalt = Artbez.Inhalt AND Artst.Jahr = Artbez.Jahr AND ((lInaktiv) OR (NOT lInaktiv AND Artst.Aktiv AND Artst.Ausverk < 9)) : lJa = TRUE. IF NOT DYNAMIC-FUNCTION('getArtikelSelektiert':U, Artst.Artnr, Artst.Inhalt, Artst.Jahr ) THEN DO: CREATE tArtst. BUFFER-COPY Artst TO tArtst ASSIGN tArtst.iRecid = RECID(Artst) tArtst.Bez1 = Artbez.Bez1 tArtst.Bez2 = Artbez.Bez2 tArtst.cSort = STRING(iPrior,'99') + Artst.Suchbe + STRING(Artst.Artnr ,'99999999') + STRING(Artst.Inhalt,'9999') + STRING(Artst.Jahr ,'9999'). iAnzArt = iAnzArt + 1. END. IF iAnzArt >= 100 THEN LEAVE. END. IF lJa THEN RETURN iAnzArt. RETURN iAnzArt. END FUNCTION. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION startQueryArtlief gArtikelSuchen FUNCTION startQueryArtlief RETURNS INTEGER ( /* parameter-definitions */ ) : /*------------------------------------------------------------------------------ Purpose: Notes: ------------------------------------------------------------------------------*/ DEFINE VARIABLE iAnzArt AS INTEGER NO-UNDO. cIndex = SUBSTITUTE('XLIEFSTX&1', STRING(iKnr,'999999')). iAnzArt = DYNAMIC-FUNCTION('startQueryArtikel':U) NO-ERROR. RETURN iAnzArt. END FUNCTION. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME