Проблема с ампскриптом с оператором IF

Я пытаюсь выполнить поиск двух разных расширений данных в точной цели, используя ampscript. Пожалуйста, найдите пример кода, который я пытаюсь использовать.

%%[
Var @rows
Set @rows=LookupRows("DataExtensionOne","Lead Owner","Nick")
FOR @y = 1 TO RowCount(@rows) DO 
    Set @currentRow = Row(@rows,@y)    
    Set @value = FIELD(@currentRow ,"LeadId")
    Set @secondDERows = LookupRows("DataExtensionTwo","Gender","Male")
    FOR @x = 1 TO RowCount(@secondDERows) DO 
        Set @currentRowInSecDE = Row(@secondDERows,@x)    
        Set @secValue = FIELD(@currentRowInSecDE ,"LeadId")
        IF @value == @secValue THEN
            Set @FirstName = FIELD(@currentRowInSecDE ,"FirstName")
        /* Need to break out of the loop */
]%%

Проверка условия If не удалась @value == @secValue . Он не получает никакого значения для @FirstName. И какой оператор следует использовать, чтобы выйти из цикла IF?

Кто-нибудь сталкивался с подобными проблемами? Пожалуйста, дайте мне знать.


person Smruti Bhargava    schedule 19.02.2015    source источник
comment
Отсутствует endif в конце.   -  person Gortonington    schedule 26.02.2015
comment
Можете ли вы опубликовать весь сценарий? Ни одна из ваших петель не закрыта.   -  person Adam Spriggs    schedule 02.03.2015


Ответы (1)


Насколько мне известно, в ampscript нет оператора break.

В этом случае я бы установил логическое значение, которое проверяется на ложность в начале каждого цикла и устанавливается на True, когда вы находите совпадение. Таким образом, как только вы сопоставитесь, вы все равно пройдете остальную часть цикла, но отметка будет происходить внутри них.

%%[
Var @rows
Set @found_result = False
Set @rows=LookupRows("DataExtensionOne","Lead Owner","Nick")
FOR @y = 1 TO RowCount(@rows) DO
    if not @found_result then
        Set @currentRow = Row(@rows,@y)    
        Set @value = FIELD(@currentRow ,"LeadId")
        Set @secondDERows = LookupRows("DataExtensionTwo","Gender","Male")
        FOR @x = 1 TO RowCount(@secondDERows) DO 
            if not @found_result then
                Set @currentRowInSecDE = Row(@secondDERows,@x)    
                Set @secValue = FIELD(@currentRowInSecDE ,"LeadId")
                IF @value == @secValue THEN
                    Set @FirstName = FIELD(@currentRowInSecDE ,"FirstName")
                    Set @found_result = True
                ENDIF
            endif
        NEXT @x
    endif
NEXT @y
]%%
person c4collins    schedule 26.11.2015