Russian Qt Forum

Qt => Базы данных => Тема начата: karpenko1989 от Февраль 27, 2012, 12:25



Название: QODBC ошибка Unable to execute primary key list
Отправлено: karpenko1989 от Февраль 27, 2012, 12:25
Здравствуйте. Строю дерево с использованием QSqlTableModel. При компиляции программы выводится предупреждение:
Код:
"QODBCDriver::primaryIndex: Unable to execute primary key list" 	Error: "" 
Дерево строится правильно, но текста не видно. Использую БД EMPRESS.

Если же использовать SQlite, то все работает правильно. Может быть Кто-нибудь сталкивался с такой проблемой?


Название: Re: QODBC ошибка Unable to execute primary key list
Отправлено: Пантер от Февраль 27, 2012, 12:30
Код показывай.


Название: Re: QODBC ошибка Unable to execute primary key list
Отправлено: karpenko1989 от Февраль 27, 2012, 12:34
Код:
.....
QSqlDatabase db  = QSqlDatabase::addDatabase("QODBC");
db.setDatabaseName("emp_config");
db.setUserName("root");

.......

void TreeModel::setupModelData(TreeItem *parent)
{
  QMap<int, TreeItem*> parents;
  parents.insert(0, parent);

  QSqlQuery q;

  qDebug() << q.exec("select id, tag_source, marker,name from cfg_test where ((id >= 1001) AND (id <= 1050))");


  while (q.next()) {
    qDebug() << q.record();

    int id             = q.value(0).toInt();
    QString tag_source = q.value(1).toString();
    QString marker     = q.value(2).toString();

    if (marker.isEmpty())
    {
      marker_int = marker.toInt();
      marker_int = 0;
    }
    else
    {
      marker.truncate(4);
      marker_int = marker.toInt();
    }

    TreeItem *item = new TreeItem(id, parents.value(marker_int));

    parents.value(marker_int)->appendChild(item);

    if (!tag_source.isEmpty())
      parents.insert(id, item);
  }
}