2016-04-26 3 views

Antwort

0
DEFINE VARIABLE v-cnt AS INTEGER  NO-UNDO. 
DEFINE VARIABLE segment AS longchar NO-UNDO. 
DEFINE VARIABLE eachelement AS CHARACTER NO-UNDO. 

assign segment = "abc;bcd;efg;". 

DO v-cnt = 1 TO num-entries(segment, ";") - 1 : 

ASSIGN eachelement = string(entry(v-cnt, segment, ";")). 

FOR each table1 where table1.field1 matches "*" + eachelement + "*" no-lock: 

     MESSAGE table1.field1 
      VIEW-AS ALERT-BOX INFO BUTTONS OK. 
END. 
END. 
1

Während Ihre Lösung ok arbeiten, gibt es eine Menge Aufwand, um es, insbesondere wenn die ‚für jeden‘ eine langsame Abfrage. Sie sollten besser eine temporäre Tabelle der gewünschten Werte erstellen und sie der Abfrage hinzufügen. Und wenn Sie "Übereinstimmungen" verwenden, stellen Sie sicher, dass Feld1 in einem anständigen Index ist oder die Leistung wird schrecklich sein!

DEFINE VARIABLE v-cnt AS INTEGER  NO-UNDO. 
DEFINE VARIABLE segment AS longchar NO-UNDO. 

define temp-table tt-element no-undo 
    field element as character 
    index elidx is primary element. 

assign segment = "abc;bcd;efg;". 

do v-cnt = 1 to num-entries(segment,';'): 
    create tt-element. 
    tt-element.element = entry(v-cnt,segment,';'). 
end. 

for each tt-element, 
    each table1 no-lock 
    where table1.field1 matches '*' + tt-element.element + '*': 
    message table1.field1 
    view-as alert-box info buttons ok. 
end. 
Verwandte Themen