2

このデータベースにある友人のさまざまな名前を出力したいと考えています。選択した名前に応じて、その名前に関連付けられている友達のリストが出力されます。

%%[

    FOR @y = 1 TO @friendRowcount DO 
        Set @friendRow = Row(@friendRows,@y)
        Set @friendName = Lookup("DB_FriendIDToName","friend_name","friendid",FIELD(@FriendRow,"friendid"),"language",Lowercase(@lookupLang))    

        Set @NameList = CONCAT(@NameList, @friendName, ", ")

    NEXT @y
    Set @bodytext = Replace(@bodytext,"PLACEHOLDERFRIENDNAMES", @NameList)


    Set @bodyText = "Your friends are PLACEHOLDERFRIENDNAMES."
]%%

%%=v(@bodyText)=%%

問題は、カンマ区切りのリストではなく、1 つの名前のみが出力されることです。通常、リストの長さが他のリストとは異なる方法を見て、これを動的に行う方法がわかりません。

見たい出力は " Your friends are Name1, Name2, Name3, and Name4."

私は現在 " Your friends are Name3"を見@Name@NameListいます。

編集:コードを更新しました。これは正しい方向への一歩です。私が遭遇した最後の問題は、「and Name#」部分に取り組む方法を考え出すことでした。

4

1 に答える 1

4
%%[

Set @bodyText = "Your friends are PLACEHOLDERFRIENDNAMES."

FOR @y = 1 TO @friendRowcount DO 
    Set @friendRow = Row(@friendRows,@y)
    Set @friendName = Lookup("DB_FriendIDToName","friend_name","friendid",FIELD(@FriendRow,"friendid"),"language",Lowercase(@lookupLang))    

    IF (@y == 1) THEN
        Set @NameList = @friendName
    ELSEIF (@y < @friendRowcount) THEN
        Set @NameList = CONCAT(@NameList,", ",@friendName)
    ELSEIF (@y == @friendRowcount) THEN
        Set @NameList = CONCAT(@NameList, ", and ", @friendName)
    ENDIF 

NEXT @y
Set @bodyText = Replace(@bodyText,"PLACEHOLDERFRIENDNAMES", @NameList)

]%%

%%=v(@bodyText)=%%

中間部分を修正。助けてくれてありがとう!発生して混乱を招く可能性がある状況のために、恐ろしいオックスフォードコンマを含めました。

于 2014-09-05T18:56:48.337 に答える