Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 18.11.2013, 02:32   #1
seltsam
Новичок
Джуниор
 
Регистрация: 18.11.2013
Сообщений: 1
По умолчанию Выборка данных из StringGrid (C++ Builder)

Здравствуйте! Заранее извиняюсь за возможно глупый вопрос и кривость кода, но программист я начинающий. Собственно вопрос: мне необходимо выбрать из таблицы самый покупаемый и самый редко покупаемый товар за заданный период времени. Выборку он делает, но не всегда учитывает последнюю строку таблицу. Если же еще раз нажать на кнопку "Выборка" но все отлично.

Буду благодарна за любую подсказку и помощь!

Вот код обработчика события нажатия на кнопку "Выборка
Код:
TStringList * T = new TStringList;
  T->Clear();
 //Выборка данных из указанного диапазона дат
 //запись выбраных строк в список Т

  for(int i=1;i<TabVZak->RowCount;i++)
   {
     if(StrToDate(TabVZak->Cells[4][i])>DateTimePicker1->Date)
      if(StrToDate(TabVZak->Cells[4][i])<DateTimePicker2->Date)
         T->Add(TabVZak->Rows[i]->DelimitedText);
   }
  //заполнение таблицы данными из списка Т
  TabVZak->RowCount=T->Count+1;
  for(int i=1;i<TabVZak->RowCount;i++)
     TabVZak->Rows[i]->DelimitedText=T->Strings[i-1];

 TStringList * K = new TStringList;
  K->Clear();
  //выбор строк с одинаковым названием товара
  for(int i=0;i<T->Count;i++)
  {
     for(int j=i+1;j<T->Count;j++)
        if(TabVZak->Cells[1][i+1]==TabVZak->Cells[1][j+1]) //сравнение названий
        {
           //суммирование кол-ва товара и запись в первую строку с таким названием
           TabVZak->Cells[2][i+1]=StrToInt(TabVZak->Cells[2][i+1]) + StrToInt(TabVZak->Cells[2][j+1]);
           //суммирование суммы цены товара и запись в первую строку с таким названием
           TabVZak->Cells[3][i+1]=FloatToStrF(StrToFloat(TabVZak->Cells[3][i+1]) + StrToFloat(TabVZak->Cells[3][j+1]),ffFixed,8,2);
           //Замена первой строки на новую с изменнной суммой и кол-вом
           T->Strings[i]=TabVZak->Rows[i+1]->DelimitedText;
           //удаление повторяющейся строки
           T->Delete(j);

        }

   K->Add(T->Strings[i]);
   }

  TabVZak->RowCount=K->Count+1;
 //вывод в талицу полученных результатов
  for(int i=1;i<TabVZak->RowCount;i++)
     TabVZak->Rows[i]->DelimitedText=K->Strings[i-1];

 //сортировка пузырьком по уменьшению кол-ва
 AnsiString H;
  for(int i=1;i<TabVZak->RowCount;i++)
      for(int j=1;j<TabVZak->RowCount;j++)
         if(TabVZak->Cells[2][i]>TabVZak->Cells[2][j])
             {
                 H=TabVZak->Rows[i]->DelimitedText;
                 TabVZak->Rows[i]=TabVZak->Rows[j];
                 TabVZak->Rows[j]->DelimitedText=H;
             }

     T->Clear();
seltsam вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
работа с StringGrid в C++Builder Karina89 Помощь студентам 1 01.12.2011 22:10
StringGrid. C++ Builder fill_24 Помощь студентам 2 03.12.2010 00:19
как создать базу данных в builder c++ с использованием stringgrid boris2010 C++ Builder 1 15.03.2010 09:54
Компонент StringGrid в Builder c++. (*_*) C++ Builder 2 02.06.2009 18:09
Выборка данных из StringGrid quqer БД в Delphi 1 14.03.2008 12:56