Компонент "Текст"

отредактировано 00:22 Раздел: FastReport 3.0
Проблема вот в чем, в компонент "Текст" встовляю несколько колонок таблицы:
[frxDBDataset1."Ф.И.О"] [frxDBDataset1."Город'] и мне нужно чтобы после
[frxDBDataset1."Город'] была запятая, но только тогда когда есть "Город", а когда нет, то и нет запятой.

Комментарии

  • отредактировано 00:22
    В обработчике OnBeforePrint для мемки проанализируйте значение типа так
    var
    s : string;
    begin
    s := <frxDBDataset1."Ф.И.О">;

    if VarToSTR( <frxDBDataset1."Город'> ) <> '' then
    s := s + <frxDBDataset1."Город'> + ',';

    TfrxMemoView(Sender).Text := s;
    end;
  • Andrew_ShAndrew_Sh г.Минск
    отредактировано 00:22
    Lantik написал:
    Проблема вот в чем, в компонент "Текст" встовляю несколько колонок таблицы:
    [frxDBDataset1."Ф.И.О"] [frxDBDataset1."Город'] и мне нужно чтобы после
    [frxDBDataset1."Город'] была запятая, но только тогда когда есть "Город", а когда нет, то и нет запятой.
    А можно и без скрипта обойтись

    [frxDBDataset1."Ф.И.О"][IIF(<frxDBDataset1."Город'> <> '', ', ' ,'' ][frxDBDataset1."Город']
  • отредактировано 00:22
    Ни чего не получается.
    Пробую через OnBeforePrint получается вот что на первой строке один город на второй строке два на третей три и т.д.
    А второй код вызывает ошибку.
  • gpigpi
    отредактировано 00:22
    написал:
    Пробую через OnBeforePrint получается вот что на первой строке один город на второй строке два на третей три и т.д.
    при таком коде такого быть не должно:
    s := <frxDBDataset1."Ф.И.О">;
    if VarToSTR( <frxDBDataset1."Город"> ) <> '' then
    s := s + <frxDBDataset1."Город"> + ',';
    
    , а вот без первой строки такое возможно
    написал:
    А второй код вызывает ошибку
    там просто одинарная кавычка после Город (Copy-Paste ;) )
    [frxDBDataset1."Ф.И.О"][IIF(<frxDBDataset1."Город"> <> '', ', ' ,'' ][frxDBDataset1."Город"]
    
    - должно работать
  • отредактировано 00:22
    Да на счет одинарной ковычки я понял сразу.

    А ошибка все равно лезет: ' IIF (<frxDBDataset1."Город"> <> '', ', ', '' ':')' expected
  • отредактировано 00:22
    s := <frxDBDataset1."Ф.И.О">;
    if VarToSTR( <frxDBDataset1."Город"> ) <> '' then
    s := s + <frxDBDataset1."Город"> + ',';

    А как в этот код добавить еще колонки ну например: "Улицу", "Корпус", "Дом" и т.д. Но только так чтобы они были по порядку.

  • отредактировано November 2005
    Все я понял почему ошибка просто в конце не хватало скобки
    [frxDBDataset1."Ф.И.О"][IIF(<frxDBDataset1."Город"> <> '', ', ' ,'' [b]<span style='color:red'>)</span>[/b]][frxDBDataset1."Город"]

    Большое спасибо заработало. ;)
  • gpigpi
    отредактировано November 2005
    написал:
    А как в этот код добавить еще колонки ну например: "Улицу", "Корпус", "Дом" и т.д. Но только так чтобы они были по порядку
    s := <frxDBDataset1."Ф.И.О">;
    if VarToSTR( <frxDBDataset1."Город"> ) <> '' then
    s := s + ', '+ <frxDBDataset1."Город">;
    if VarToSTR( <frxDBDataset1."Улица"> ) <> '' then
    s := s + ', '+ <frxDBDataset1."Улица">;
    if VarToSTR( <frxDBDataset1."Корпус"> ) <> '' then
    s := s + ', '+ <frxDBDataset1."Корпус">;
    if VarToSTR( <frxDBDataset1."Дом"> ) <> '' then
    s := s + ', '+ <frxDBDataset1."Дом">;
    if VarToSTR( <frxDBDataset1."Квартира"> ) <> '' then
    s := s + ', '+ <frxDBDataset1."Квартира">;
    if VarToSTR( <frxDBDataset1."Этаж"> ) <> '' then
    s := s + ', '+ <frxDBDataset1."Этаж">;
    
  • Andrew_ShAndrew_Sh г.Минск
    отредактировано November 2005
    Маленькое дополнение. В качестве оптимизации можно преобразовать
    кусок повторяющегося кода в варианте от gpi
    if VarToSTR( <frxDBDataset1."Город"> ) <> '' then
    s := s + ', '+ <frxDBDataset1."Город">;
    

    в функцию
    function StrWithComma(const s: string): string;
    begin
      if s <> '' 
        then result := ', ' + s;
    end;
    
    которую и использовать потом либо в мемо либо в скрипте. И выражение будет выглядеть короче и элегантнее, чем все вышеприведенные варианты. ;)

Оставить комментарий

Многофункциональный текстовый редактор. Чтобы отредактировать стиль параграфа, нажмите TAB, чтобы перейти к меню абзаца. Там вы можете выбрать стиль. По умолчанию не выбран ни один стиль. Когда вы выберете текст, появится встроенное меню форматирования. Нажмите TAB, чтобы войти в него. Некоторые элементы, такие как многофункциональные вставки ссылок, картинок, индикаторов загрузки и сообщений об ошибок могут быть вставлены в редактор. Вы можете перемещаться по ним, используя стрелки внутри редактора и удалять с помощью клавиш delete или backspace.