Russian Qt Forum

Qt => Базы данных => Тема начата: Astrologer от Октябрь 13, 2010, 13:43



Название: Посчитать размер каждого поля в таблице
Отправлено: Astrologer от Октябрь 13, 2010, 13:43
Всем привет. Допустим есть QSqlQueryModel. И в ней нужно найти максимальную длину записи в каждом поле.
Я пишу так. Может кто нибудь предложит быстрее? Только без графов, пожалуйста.  :) Заранее благодарю.
Код
C++ (Qt)
QHash<QString, int> QDbfReader::getMaxFieldsSize(QSqlQueryModel* model)
{
   QHash<QString, int> hash;
   while(model->canFetchMore())
       model->fetchMore();
   for (int j=0; j < model->columnCount();++j)
   {
       QList<int> myList;
       for (int i = 0; i < model->rowCount(); ++i)
           myList << model->record(i).value(j).toString().size();
       qSort(myList.begin(), myList.end());
       int size = myList.at(myList.size()-1);
       hash.insert(model->headerData(j, Qt::Horizontal).toString(), size);
   }
   return hash;
}
 


Название: Re: Посчитать размер каждого поля в таблице
Отправлено: Kolobok от Октябрь 13, 2010, 14:03
Код
SQL
SELECT max( length( COLUMN ) ) FROM TABLE
 


Название: Re: Посчитать размер каждого поля в таблице
Отправлено: Astrologer от Октябрь 13, 2010, 14:30
 :) ну я так и сделаю


Название: Re: Посчитать размер каждого поля в таблице
Отправлено: trot от Октябрь 13, 2010, 21:44
Для полей типа char всегда длина будет  равной длине указанной при создании таблицы, не зависимо от того какого размера текст там лежит в данный момент. Поэтому желательно еще использовать функции обрезающие пробелы.