Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Unable to find table [Имя таблицы]
Форум на CrossPlatform.RU > Библиотеки > Qt > Qt Разработка баз данных
aasavelev
Пишу первое приложение по работе с базой данных. Среда разработки QtCreator. В ней создаю через дизайнер форм форму на нее помешаю TableView. Но в него не получается вывести данные из таблицы.
Исходный код файла mainwindow.cpp
#include "mainwindow.h"
#include "ui_mainwindow.h"

#include <QTableView>
#include <QMessageBox>
#include <QtSql/QtSql>

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);

    QString connectionTemplate = "DRIVER={SQL SERVER};SERVER=%1;DATABASE=%2;Trusted_Connection=True;";

    QString connectionString = connectionTemplate.arg("ServerSql").arg("Database");
    QSqlDatabase Connect = QSqlDatabase::addDatabase("QODBC", connectionString);

    Connect.setDatabaseName(connectionString);

    QMessageBox msgBox;


    if(!Connect.open()){
        msgBox.setIcon(QMessageBox::Critical);
        msgBox.setText(Connect.lastError().databaseText());
        msgBox.exec();
    }

    QSqlTableModel model;
    model.setTable("otdel");
    model.select();
    model.setEditStrategy(QSqlTableModel::OnFieldChange);

    qDebug()<<model.lastError();

    ui->tableView->setSelectionBehavior(QAbstractItemView::SelectRows);

    ui->tableView->setModel(&model);

    //ui->tableView->show();
    ui->tableView->selectRow(0);

}

MainWindow::~MainWindow()
{
    delete ui;
}

Если кому необходимо еще выкладываю исходный код файла mainwindow.h
Раскрывающийся текст
#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>

namespace Ui {
class MainWindow;
}

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    explicit MainWindow(QWidget *parent = 0);
    ~MainWindow();

private slots:

private:
    Ui::MainWindow *ui;
};

#endif // MAINWINDOW_H

Строка
   qDebug()<<model.lastError();
в отладчик выводит "Unable to find table otdel". Соединение с сервером проходит удачно.
Подскажите как это исправить.
aasavelev
Почитав справку по Qt. Нашел ошибку в программе. Не указывал какое соединение использовать.
 QSqlTableModel *model = new QSqlTableModel(0, Connect);;
    model->setTable("otdel");
    model->select();
    model->setEditStrategy(QSqlTableModel::OnFieldChange);
Litkevich Yuriy
Цитата(aasavelev @ 23.12.2013, 9:51) *
Не указывал какое соединение использовать.
Ответ не верный.

Исправь свой исходный код так, чтобы в нём добавилось только указание соединения и больше ничего.
Результат будет как и в первом случае.

Подсказка:
проблема твоего кода только в понимании С++ (к Qt отношения не имеет).
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2024 IPS, Inc.