Russian Qt Forum

Qt => Базы данных => Тема начата: lit-uriy от Апрель 24, 2017, 11:36



Название: QSqlRelationalTableModel::fieldIndex()
Отправлено: lit-uriy от Апрель 24, 2017, 11:36
Есть такой код
Код
C++ (Qt)
model->setRelation(model->fieldIndex("pumpId"), QSqlRelation("flow_pumps", "id", "displayName"));
model->select();
 
после селекта model->fieldIndex("pumpId"), уже возвращает -1, поле "pumpId" превращается в "flow_pumps_displayName_4" (подсказал: qDebug() << "Record:" << model->record(); )

как же получить индекс поля по его нормальному имени ("pumpId")?


Название: Re: QSqlRelationalTableModel::fieldIndex()
Отправлено: PimenS от Апрель 24, 2017, 11:51
Вряд ли до model->select() можно увидеть fieldIndex.


Название: Re: QSqlRelationalTableModel::fieldIndex()
Отправлено: lit-uriy от Апрель 24, 2017, 13:20
тогда бы в первой же строчке (приведённого примера) была бы лажа, но всё замечательно работает.
что так же подтверждается  с помощью
Код
C++ (Qt)
qDebug() << "Record:" << model->record();
до model->select()


Название: Re: QSqlRelationalTableModel::fieldIndex()
Отправлено: PimenS от Апрель 24, 2017, 13:31
Ну правильно.

model->record()

Цитировать
This is an overloaded function.
It returns an empty record, having only the field names. This function can be used to retrieve the field names of a record.

Читает данные из базы, а field до select() еще пустой.

Делай тогда model->record().indexOf("pumpId") вместо fieldIndex("pumpId")


Название: Re: QSqlRelationalTableModel::fieldIndex()
Отправлено: lit-uriy от Апрель 25, 2017, 06:08
PimenS прочитай внимательно первый пост