2016-04-26 1 views

Répondre

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

Alors que votre solution fonctionne bien, il y a beaucoup de frais généraux à elle, en particulier si le « pour chaque » est une requête lente. Vous feriez mieux de créer une table temporaire des valeurs que vous voulez et d'ajouter cela à la requête. Et comme vous utilisez des 'matches', assurez-vous que field1 est dans un index décent ou que la performance sera horrible!

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.