0

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);

}

ファイル権限 - フル コントロール - 変更 - 読み取りと実行 - 読み取り - 書き込み

私は本当にこの機能を手に入れたいと思っています。エラーは接続文字列にあると思いますが、この時点で数時間試しましたが成功しませんでした。

前もって感謝します。

4

0 に答える 0