Seite 1 von 1

Keine ODBC-treiber geladen

Verfasst: 26. September 2007 15:13
von kuberka
Hi,
habe Qt 4.3.1 unter Windows standardmäßig installiert.

Wenn ich den nach folgenden Code laufen lasse bekomme ich die Meldungen

QSqlDatabase: QODBC driver not loaded
QSqlDatabase: available drivers:


Das heißt für mich, es sind keine Treiber vorhanden und daher konnte ich den ODBC-Treiber nicht laden.

Meine Frage nun, wie kann ich die Treiber laden.

Ich habe auch schon die Treiber dlls ins system32 Verzeichnis kopiert.

Code: Alles auswählen

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

	qDebug()<<db.lastError().text();

	db.setDatabaseName("DRIVER={Microsoft Access Driver (*.mdb)};FIL={MS Access};DBQ=c://ForBalReport.mdb");
 
	if (!db.open()) 
	{
		qDebug()<<db.lastError().text();
		 int a=1;
		// success!
	}

Verfasst: 26. September 2007 15:17
von CaptnChaos
wenn keine treiber vorhanden sind, musst du sie erst mal compilieren.
Wie das geht steht in der Doku. oder einfach mal googlen.

Verfasst: 26. September 2007 15:18
von mollitz
hast du den odbc treiber mitkompiliert?
muss man an geben -sql-driver-odbc oder sowas

Verfasst: 26. September 2007 15:20
von CaptnChaos
Ha! Schneller

Verfasst: 26. September 2007 16:07
von mollitz
ach mennö :oops:

Verfasst: 26. September 2007 16:53
von kuberka
Hi,

es existieren bei mir die Treiber-DLLs schon(qsqlodbc4.dll)

hmm wie kann ich die jetzt laden?

Arbeite unter Windows, daher habe ich die Standardinstallation von QT

Gruss

Torsten

Verfasst: 26. September 2007 16:57
von QT-Junkee
Hi,

Folgende Reihenfolge ist entscheidend ->

Code: Alles auswählen

    QString mdbName("DRIVER={Microsoft Access Driver (*.mdb)};FIL={MS Access};DBQ=");
      mdbName.append(m_mdb);                                              // den pfad zur Datenbank hinzufügen
      m_mdb = QSqlDatabase::addDatabase("QODBC");             // Add a database with QODBC driver
      m_mdb.setDatabaseName(mdbName);

      if (m_mdb.open())
      {
          ...
      }
      else
      {// to show error message box if something failed while db opening
         QMessageBox::critical(this, tr("Database"), T_TbTexte.lastError().text(),
            QMessageBox::Ok, QMessageBox::NoButton);
      }