Qtで解析したいcsvファイルがあります。SQL プラグインを使用したいのですが、設定方法がわかりません。現在.csv
、Qt アプリからファイルを開くことができません。手動でファイルを開いてから、クエリを実行するためにアプリを起動する必要があります。
読み込もうとしているファイルが、アプリを開始する前に手動で開かれていない場合、次のドライバー エラーが発生します。
[Microsoft][ODBC Excel Driver] External table is not in the expected format.
[Microsoft][ODBC Excel Driver] General Warning Unable to open registry key 'Temporary (volatile) Jet DSN for process 0x1ae0 Thread 0x1f2c DBC 0x4c52a4 Excel.' QODBC3: Unable to connect.
これが私のセットアップです...
Qt Creator ビルド/バージョン:
- ソースからビルドしていない Qt 5.3 で作業しています。インストーラーをダウンロードしました。
- いくつかのデバッグ キットを構成しましたが、現在使用しているものは MSVC 2012 openGL 32 ビット コンパイラを使用しています (デフォルトに設定しています)。
- 私のマシンには Visual Studio 2012 と 2010 の両方があり、これは 64 ビットです。
- SQL ドライバーを作成する必要はありませんでした。既にインストールされています (使用可能なドライバー: () ("QSQLITE"、"QMYSQL"、"QMYSQL3"、"QODBC"、"QODBC3"、"QPSQL"、"QPSQL7") )
私の .pro ファイルは sql プラグインにフックします:
QT += core gui network sql
そして、私は次のものが含まれています:
#include <QSqlDatabase>
#include <QSqlQuery>
#include <QSqlError>
これは、Excel データベース接続を確立してクエリを試行する私のコードです。
QSqlDatabase db = QSqlDatabase::addDatabase("QODBC");
QString pathString = QString("C:\\MY_FILES\\test_work\\Xena\\Xena2544-2G\\Reports\\asdf_SN1_RFC2544_7_port_verify.csv");
db.setDatabaseName("DRIVER={Microsoft Excel Driver (*.xls)};DBQ=" + pathString );
if (!db.open())
{
QSqlError er = db.lastError();
QMessageBox::information(0, "Error", er.text());
}
if(db.open())
{
QSqlQuery query("select * from [" + QString("asdf_SN1_RFC2544_7_port_verify") + "$B13]"); //NEVER GETS HERE UNLESS i ALREADY MANUALLY OPENED THE FILE BEFORE RUNNING CODE.
QString process1Result = query.value(0).toString();
ui->verifyUnit1Status_lb->setText(process1Result);
}
ファイル権限 - フル コントロール - 変更 - 読み取りと実行 - 読み取り - 書き込み
私は本当にこの機能を手に入れたいと思っています。エラーは接続文字列にあると思いますが、この時点で数時間試しましたが成功しませんでした。
前もって感謝します。