1

ampscript を使用して、正確なターゲットで 2 つの異なるデータ拡張機能を検索しようとしています。私が試しているサンプルコードを見つけてください。

%%[
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 ループから抜け出すには、どのステートメントを使用する必要がありますか?

誰かが同様の問題に遭遇しましたか? 教えてください。

4

2 に答える 2

1
%%[
Var @rows
Set @found_result = False
Set @rows=LookupRows("DataExtensionOne","Lead Owner","Nick")
    FOR @y = 1 TO RowCount(@rows) DO
    if  @found_result == "TRUE" 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 @found_result == "TRUE" 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
]%%
于 2016-09-23T23:26:42.253 に答える
1

私の知る限り、ampscript にはブレーク演算子がありません。

この場合、各ループの開始時に false であることがチェックされ、一致が見つかったときに 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
]%%
于 2015-11-26T23:32:45.273 に答える