Как я могу отсортировать столбцы с условным «если» перед сортировкой? - PullRequest
0 голосов
/ 12 июня 2019

Я хочу отсортировать галерею списка по порядку даты по формуле:

SortByColumns(
    AddColumns(
        Tabela4;
        "CalcDate";
        Max(
            DateValue(Data)+Qtde_dias_para_contato;
            DateValue(Data_cotação)+Qtde_dias_para_contato;
            DateValue(data_contato_1)+Qtde_dias_para_contato;
            DateValue(data_contato_2)+Qtde_dias_para_contato;
            DateValue(data_contato_3)+Qtde_dias_para_contato;
            DateValue(data_contato_4)+Qtde_dias_para_contato;
            DateValue(data_contato_5)+Qtde_dias_para_contato;
            DateValue(data_contato_6)+Qtde_dias_para_contato;
            DateValue(data_contato_7)+Qtde_dias_para_contato;
            DateValue(data_contato_8)+Qtde_dias_para_contato;
            DateValue(data_contato_9)+Qtde_dias_para_contato;
            DateValue(data_contato_10)+Qtde_dias_para_contato;
            DateValue(data_contato_11)+Qtde_dias_para_contato;
            DateValue(data_contato_12)+Qtde_dias_para_contato));
    "CalcDate";
    Ascending)

Этот код работает, но мне нужно, чтобы это происходило только тогда, когда таблица столбцов имеет определенное значение.

Я попробовал этот код:

SortByColumns(
    AddColumns(
        Tabela4;
        "CalcDate";
        If(
            Tabela4.finalizado = "";
            Max(
                DateValue(Data)+Qtde_dias_para_contato;
                DateValue(Data_cotação)+Qtde_dias_para_contato;
                DateValue(data_contato_1)+Qtde_dias_para_contato;
                DateValue(data_contato_2)+Qtde_dias_para_contato;
                DateValue(data_contato_3)+Qtde_dias_para_contato;
                DateValue(data_contato_4)+Qtde_dias_para_contato;
                DateValue(data_contato_5)+Qtde_dias_para_contato;
                DateValue(data_contato_6)+Qtde_dias_para_contato;
                DateValue(data_contato_7)+Qtde_dias_para_contato;
                DateValue(data_contato_8)+Qtde_dias_para_contato;
                DateValue(data_contato_9)+Qtde_dias_para_contato;
                DateValue(data_contato_10)+Qtde_dias_para_contato;
                DateValue(data_contato_11)+Qtde_dias_para_contato;
                DateValue(data_contato_12)+Qtde_dias_para_contato)));
    "CalcDate";
    Ascending)

Но он не работает.Как я могу написать этот код?

1 Ответ

0 голосов
/ 13 июня 2019

Если я правильно понимаю, вы хотите отсортировать по вычисленной дате, если Tabela4.finalizado пусто. Что бы вы хотели, чтобы произошло, если бы оно не было пустым? Если ожидаемый результат предназначен для того, чтобы результат не сортировался, вы можете иметь выражение If вне SortByColumns:

If(
    Tabela4.finalizado = "";
    SortByColumns(
        AddColumns(
            Tabela4;
            "CalcDate";
            Max(
                DateValue(Data)+Qtde_dias_para_contato;
                DateValue(Data_cotação)+Qtde_dias_para_contato;
                DateValue(data_contato_1)+Qtde_dias_para_contato;
                DateValue(data_contato_2)+Qtde_dias_para_contato;
                DateValue(data_contato_3)+Qtde_dias_para_contato;
                DateValue(data_contato_4)+Qtde_dias_para_contato;
                DateValue(data_contato_5)+Qtde_dias_para_contato;
                DateValue(data_contato_6)+Qtde_dias_para_contato;
                DateValue(data_contato_7)+Qtde_dias_para_contato;
                DateValue(data_contato_8)+Qtde_dias_para_contato;
                DateValue(data_contato_9)+Qtde_dias_para_contato;
                DateValue(data_contato_10)+Qtde_dias_para_contato;
                DateValue(data_contato_11)+Qtde_dias_para_contato;
                DateValue(data_contato_12)+Qtde_dias_para_contato));
        "CalcDate";
        Ascending);
    Tabela4)

Обратите внимание, что с условием If что-то странное. Tabela4 - это таблица (т. Е. Содержит несколько записей / строк), поэтому Tabela4.finalizado не является строкой, это таблица строковых значений, поэтому приведенное выше выражение не будет работать.

Если вы хотите отсортировать по вычисленной дате для строк, которые имеют finalizado = "" , и не показывают другие строки, то вы можете отфильтровать таблицу перед ее сортировкой:

SortByColumns(
    AddColumns(
        Filter(Tabela4; finalizado = "");
        "CalcDate";
        Max(
            DateValue(Data)+Qtde_dias_para_contato;
            DateValue(Data_cotação)+Qtde_dias_para_contato;
            DateValue(data_contato_1)+Qtde_dias_para_contato;
            DateValue(data_contato_2)+Qtde_dias_para_contato;
            DateValue(data_contato_3)+Qtde_dias_para_contato;
            DateValue(data_contato_4)+Qtde_dias_para_contato;
            DateValue(data_contato_5)+Qtde_dias_para_contato;
            DateValue(data_contato_6)+Qtde_dias_para_contato;
            DateValue(data_contato_7)+Qtde_dias_para_contato;
            DateValue(data_contato_8)+Qtde_dias_para_contato;
            DateValue(data_contato_9)+Qtde_dias_para_contato;
            DateValue(data_contato_10)+Qtde_dias_para_contato;
            DateValue(data_contato_11)+Qtde_dias_para_contato;
            DateValue(data_contato_12)+Qtde_dias_para_contato));
    "CalcDate";
    Ascending)

Если вам нужно что-то еще, уточните свой вопрос, и мы сможем вам помочь.

...