Russian Qt Forum

Qt => Базы данных => Тема начата: AlexMad от Апрель 16, 2018, 19:44



Название: ComboBox и mapper проблема с индексом более 255
Отправлено: AlexMad от Апрель 16, 2018, 19:44
Собственно, есть БД SQLITE.

создаю маппинг:
Код:
  tableModel_tblMain = new QSqlRelationalTableModel(this);
  tableModel_tblMain->setTable("tblMain");
  tableModel_tblMain->setRelation(tblMain_clientid, QSqlRelation("tblClients", "id", "name"));
  tableModel_tblMain->setRelation(tblMain_operatorid, QSqlRelation("tblOperators", "id", "name"));
...

// создаю реляцию
  relationModelClientID = tableModel_tblMain->relationModel(tblMain_clientid);
  relationModelClientID->setSort(tblClients_name, Qt::AscendingOrder);
  relationModelClientID->select();

...
// так как клиентов много, делаю перебор: (иначе отображает только 255 штук)
  relationModelClientID->select();
  while(relationModelClientID->canFetchMore())
    relationModelClientID->fetchMore();

...

// создаю маппинг
  mapper = new QDataWidgetMapper(this);
  mapper->setSubmitPolicy(QDataWidgetMapper::AutoSubmit);
  mapper->setModel(tableModel_tblMain);
  mapper->setItemDelegate(new QSqlRelationalDelegate(this));
  mapper->addMapping(ui.CB_ClientSelect, tblMain_clientid);
...

// после редактированния делаю субмит
mapper->submit();
А теперь самое интересное: если в комбобоксе выбран индекс до 255 включительно, строка в таблицу отлично добавляется. Если индекс 256 и выше, то mapper->submit(); возвращает false.


Название: Re: ComboBox и mapper проблема с индексом более 255
Отправлено: dio от Апрель 17, 2018, 12:52
Может Вам реализовать этот функционал не с помощью ComboBox. Ведь пользователю приложения не доставит удобства работы с таким большим списком.


Название: Re: ComboBox и mapper проблема с индексом более 255
Отправлено: AlexMad от Апрель 17, 2018, 19:10
В комбобоксе сделан перебор по имени с клавиатуры, так что операторы не задумываясь находят нужного клиента.
Вопрос не в том, как удобно, вопрос в том, ПОЧЕМУ это так ограничено?
Если где-то указаны ограничения, тогда я перепишу процедуры ввода и редактирования. Но при этом придется переучивать операторов, а это самое сложное в конкретном случае.