Конференция "Базы" » заполнение ListView, используя функцию max [IB6.x]
 
  • Finjy (28.08.08 15:14) [0]
    ListView  заполняю следующим образом
    Статус        Деталь      Версия  
    Создан        Корпус   Версия1
    Изменен       Корпус   Версия2
    Изменен       Корпус   Версия3  
    Создан        Плита    Версия1  
    Столцы Статус, Имя выбираются из запроса

    Столбец Статус имеет значение "Создан",если в столбце Версия значение Версия1, в противном случае "Изменен".

    Вот код

    var
    n:String;
    begin
              SQL.Clear;
              SQL.Add('select prj_name,prj_ver, from prjver_previews

                      left join prjversion on prjver_previews.prjver_id = prjversion.prjver_id

                      group by prj_name'
    );

                      n:=FieldByName('prj_ver');
                     
                      Open;
                      while not Eof do
                      begin
                           with ListView1.Items.Add do
                           begin
                                     if n: ='Версия1' then Caption :='Создан' else

                                             Caption :='Изменен';

                                     

                                      with SubItems do
                                      begin
                                           Add(FieldByName('prj_name').AsString);
                                           Add(FieldByName('prj_ver').AsString);

                                      end;
                                end;

                           Next;
                           end;
                      Close;
              end;


    Задача заключается в следующем: в таблице должна отображаться только последняя версия для каждой детали.С этим то проблем
    нет,в запросе пишу вместо prj_ver max(prj_ver),вместо Add(FieldByName('prj_ver').AsString) Add(FieldByName('max').AsString);
    Но колонка Статус уже не формируется получается ошибка. Как сформировать этот столбец?
  • Ega23 © (28.08.08 15:20) [1]
    Начни с того, что все with поубирай и посмотри, что получается.
  • Сергей М. © (28.08.08 16:37) [2]

    > колонка Статус уже не формируется получается ошибка


    Возьми отладчик в зубы да пройдись по своему творению пошагово.
    В чем проблема-то ?
  • Sergey13 © (28.08.08 16:40) [3]
    > [0] Finjy   (28.08.08 15:14)
    > Столбец Статус имеет значение "Создан",если в столбце Версия
    > значение Версия1, в противном случае "Изменен".

    Ну и какой тогда в нем смысл?
  • Finjy (28.08.08 16:44) [4]
    Строка n:=FieldByName('prj_ver'); уже заведомо не правильная, отладчик тут не поможет. Как раз и нужно изменитьэту стоку и условие
                                                                     
    if n: ='Версия1' then Caption :='Создан' else

                                            Caption :='Изменен';



    Вот я и не знаю как это сделать
  • Finjy (28.08.08 16:46) [5]
    Должна получаться следующая таблица

    Статус        Деталь    Версия  
    Изменен      Корпус   Версия3  
    Создан        Плита    Версия1  

  • Виталий Панасенко © (28.08.08 16:50) [6]

    > Finjy   (28.08.08 16:44) [4]


    > Finjy   (28.08.08 16:46) [5]

    Кто-нибудь что-нибудь понял?
  • Sergey13 © (28.08.08 16:51) [7]
    > group by prj_name'

    зачем это в запросе, если нет агрегатов?
  • Виталий Панасенко © (28.08.08 16:52) [8]
    тебе нужно по последней версии написать создан или изменен?
  • Ega23 © (28.08.08 17:09) [9]

    > Кто-нибудь что-нибудь понял?


    не-а. Но with - слишком дофига.
  • Finjy (29.08.08 08:38) [10]
    Нужно по последней версии написать Создан или Изменен, именно этого я и хочу.
  • Виталий Панасенко(дом) (29.08.08 09:27) [11]
    for
    select iif(max(vers_no)=1,'Создан','Изменен') from table_name into :var do suspend;
  • Виталий Панасенко(дом) (29.08.08 09:30) [12]
    сорри, ИБ6, там нету IIF...
    for
    select max(vers_no) from table_name into :var do
    begin
    if var=1 then
      var_str = 'Создан';
    else
      var_str = 'Изменен'
    suspend;
    end;
    var_str - выходной параметр
 
Конференция "Базы" » заполнение ListView, используя функцию max [IB6.x]
Есть новые Нет новых   [134473   +28][b:0][p:0.002]