Ответа в предыдущей теме, видимо, не будет. Возможно, надо сформулриовать по-другому вопрос.
Итак, в связке Ms Sql Server 2000 + Qt + Odbc у меня есть форма редактирования данных БД, в которой поля редактирования Edit -ы и 1 ComboBox связаны QWidgetMapper -ом с соответствующими полями БД. Код банален, но на всякий случай приведу и его.
Таблица, с которой я работаю в форме, создавалась в SQL Servere вручную, но описать ее можно следующим скриптом:
query.exec("CREATE TABLE employee ("
"id INTEGER PRIMARY KEY AUTOINCREMENT, "
"name VARCHAR(40) NOT NULL, "
"departmentid INTEGER NOT NULL, "
"extension INTEGER NOT NULL, "
"email VARCHAR(40) NOT NULL, "
"startdate DATE NOT NULL, "
"FOREIGN KEY (departmentid) REFERENCES department)");
Т.е. таблица с внешним ключом.
Поэтоиу использовалась далее QSqlRelationalTableModel:
tableModel = new QSqlRelationalTableModel(this);
tableModel->setTable("employee");
tableModel->setRelation(Employee_DepartmentId,
QSqlRelation("department", "id", "name"));
tableModel->setSort(Employee_Name, Qt::AscendingOrder);
tableModel->select();
далее идет привязка через Mapper:
mapper = new QDataWidgetMapper(this);
mapper->setSubmitPolicy(QDataWidgetMapper::AutoSubmit);
mapper->setModel(tableModel);
mapper->setItemDelegate(new QSqlRelationalDelegate(this));
mapper->addMapping(nameEdit, Employee_Name);
mapper->addMapping(departmentComboBox, Employee_DepartmentId);
mapper->addMapping(extensionLineEdit, Employee_Extension);
mapper->addMapping(emailEdit, Employee_Email);
mapper->addMapping(startDateEdit, Employee_StartDate);
Когда у меня готовые записи внесены в БД ручками, то маппер работает вполне сносно - редактирование готовых записей и навигация по ним нормально проходит. Но вот когда начинает выполняться слот формы по добавлению новой записи в таблицу
void EmployeeForm::addEmployee()
{
int row = mapper->currentIndex();
if (! mapper->submit())
{
QMessageBox::warning(0, QObject::tr("Database Error"),
tableModel-> lastError().text());
}
tableModel->insertRow(row);
mapper->setCurrentIndex(row);
nameEdit->clear();
emailEdit->clear();
extensionLineEdit->clear();
startDateEdit->setDate(QDate::currentDate());
nameEdit->setFocus();
}
mapper всегда возвращает false, и соответственно
в MessageBox выводится следующая ошибка:
QODBCResult::exec: unable to bind variable: "[Microsoft][ODBC SQL Server Driver]Дополнительная возможность не реализована"
В общем, я перечитал весь этот форум, посвященный БД+Qt, и ответа на этот вопрос не нашел. Уже третий день этот вопрос висит. Помогите люди добрые и знающие, пожалуйста.