0

ユーザーに表示するレポートを生成するビューを持つアプリケーションに取り組んでいます。このレポートは、フィルタリングする必要があるものです。Qt で SQL サポートを使用して、フィルター機能を備えた QSqlTableModel を使用してみましたが、「テーブル TABLE_NAME が見つかりません」というエラーが表示されるため、ビューが見つからないようです。Qtでビューをどのようにモデル化しますか? 特にそれに関する情報を見つけることができませんでした。

QSqlDatabase connection(Request_Connection("DB Name"));
QSqlTableModel* pStore(new QSqlTableModel(NULL, connection));

if (connect(connection))
    pStore->setTable("ViewName");
4

2 に答える 2

0

「テーブルTABLE_NAMEが見つかりません」というエラーが発生した場合は、存在しないテーブルからデータを取得しようとしていることを意味します。データベースを確認してください。

編集

さて、それはあなたがやったことは奇妙です。これはもっと次のようになります。

QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");
db.setHostName("localhost");
db.setDatabaseName("customdb");
db.setUserName("root");
db.setPassword("root");
if(!db.open())
    QMessageBox::information(this, "Error", "Couldn't open database!");

それはオープンデータベース用です。最初の引用符には、使用するsqlの名前があります。ここでは、利用可能なすべてのSQLプラグインを見つけることができます。データベースに接続すると、いくつかのデータを読み取ることができます。これにQSqlTableModelを使用する場合は、次のように実行できます。

QSqlTableModel *model = new QSqlTableModel(parentObject, db);
model->setTable("employee");
model->setEditStrategy(QSqlTableModel::OnManualSubmit);
model->select();
model->setHeaderData(0, Qt::Horizontal, tr("Name"));
model->setHeaderData(1, Qt::Horizontal, tr("Salary"));

QTableView *view = new QTableView;
view->setModel(model);
view->hideColumn(0); // don't show the ID
view->show();

この簡単な例では、「employee」テーブルから「Name」列と「Salary」列をロードし、「view」QTableViewに表示します。それはあなたがそれをするべき方法です。

于 2012-07-17T18:25:44.680 に答える
0

私のアドバイス:

  1. データベース名を確認してください。
  2. このウェブサイトは、QSqlTableModel をよりよく理解するのに役立ちます http://harmattan-dev.nokia.com/docs/library/html/qt4/qsqltablemodel.html
于 2013-08-10T01:12:56.527 に答える