簡體   English   中英

MS Access和QSqlQuery

[英]MS Access and QSqlQuery

我的英語不是很好,但是我會盡力描述我的問題。 所以,我有原始代碼:

    base = QSqlDatabase::addDatabase("QODBC");

 QSettings sets("FlowModel","Settings");

 currentBase = sets.value("currentBase").toString();

    base.setHostName("localhost");

    base.setDatabaseName(QString("DRIVER={Microsoft Access Driver (*.mdb)};FIL={MS Access};DBQ=%1").arg(currentBase));

 if(base.open())

  QMessageBox::information(0,"Все отлично!","База данных открыта","Ок");

 else

  QMessageBox::information(0,"Все не ахти!",base.lastError().text(),"Ок");



 QSqlQuery queryMaterials("SELECT * FROM Материал",base);

 int fieldNo = queryMaterials.record().indexOf("Название");

 int i = 0;

 while (queryMaterials.next()) {   

  comboBox->insertItem(i++,queryMaterials.value(fieldNo).toString());

     }

 queryMaterials.clear();

它可以正常工作,並且組合框可以從數據庫中獲取所有資料; 但是接下來是這段代碼:

QSqlQuery queryInfo("SELECT * FROM Свойства_материала WHERE Название='Вода'",base);

fieldNo = queryInfo.record().indexOf("P");

pLine->setText(queryInfo.value(fieldNo).toString());

而且它沒有用! 查詢返回一個空字符串(“”),但必須為數字。 我在Access中測試此SQL查詢,並且在這里工作正常。 請幫助了解我有什么問題。 謝謝。 PS我試圖使用QSqlQuery :: lastError()。text()方法,但它什么也沒有報告。 我不明白那是什么……因為可以用以下代碼打開該表:

QSqlDatabase accessBase = QSqlDatabase::addDatabase("QODBC");

 accessBase.setHostName("localhost");

 accessBase.setDatabaseName("DRIVER={Microsoft Access Driver (*.mdb)};FIL={MS Access};DBQ=D:/ИТ.mdb");

 if(accessBase.open())

  QMessageBox::information(0,"Все отлично!","База данных открыта","Ок");

 else

  QMessageBox::information(0,"Все не ахти!",accessBase.lastError().text(),"Ок");

 QTableView tableGhost;

 QSqlTableModel tableDB;

 QString whtpn = QInputDialog::getText(0, "Какую таблицу открыть?",

   "Какую таблицу открыть?");

 tableDB.setTable(whtpn);

 tableDB.select();

 tableDB.setEditStrategy(QSqlTableModel::OnFieldChange);
 tableGhost.setModel(&tableDB);

tableGhost.show();

一切都好。 但是通過查詢否(

問題已解決。 在第pLine-> setText(queryInfo.value(fieldNo).toString())行之前; 必須使用方法QSqlQuery :: next();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM