Ich arbeite in eine der projekte mit Datenbanken (Access Datenbank). In dieses Datenbanken werden nur Messdaten geschrieben. Bei mir auf meinen PC funktioniert alles einwandfrei. wenn ich dieses projekte in eine andere PC teste dann bekomme ich keine Verbindung zu Datenbank "Seh bitte Anhang" Wie gesagt auf meinen PC könnte ich immer testen und sobald ich in einem anderen PC ausprobiere bekomme ich die oben genannte Fehlermeldung. Was für treiber kann es fehlen? Auf der andere Maschiene ist auch die Office Paket installiert. gibt es einen QOBDC driver? Danke in voraus
David schrieb: > Was für treiber kann es fehlen? Vermutlich der ODBC Treiber für die Access Datenbank > Auf der andere Maschiene ist auch die Office Paket installiert. Ja, dabei wird der mitinstalliert. http://www.microsoft.com/de-de/download/details.aspx?id=13255 Mit diesem Download kannst du den auch ohne Office installieren. Aber Achtung: Die Bittigkeit muss der deiner Anwendung entsprechen, also wenn deine Anwendung 32bit ist brauchst du den 32bit Treiber (auch wenn es ein 64bit System ist). Das ist btw besonders lustig mit Java, weil man da a priori gar nicht weiß ob die JVM 32bit oder 64bit ist...
aber auf der andere PC ist auch Access darauf installiert.
Ich habe trotzdem die Treiber installiert aber ich bekomme immmer die gleiche Fehlermeldung?
Dann genügt es vielleicht nicht, nur den "Datenbanktreiber" zu installieren, sondern es muss auch eine ODBC-Verbindung konfiguiert sein ... Sieh Dir mal an, was odbcad32.exe auf dem Rechner, wo der Kram funktioniert, als System-DSNs oder User-DSNs ausgibt. Achtung: Wenn Du auf einem 64-Bit-Windows arbeitest, wird standardmäßig die 64-Bit-Version von odbcad32.exe aufgerufen; die aber ist nur für ODBC-Verbindungen von 64-Bit-Programmen zuständig. Möchtest Du die ODBC-Verbindungen für 32-Bit-Programme konfigurieren, musst Du die für 32-Bit-Verbindungen zuständige Version von odbcad32.exe aufrufen. Genialerweise heißen beide Ausführungen gleich, und genialerweise sind sie auch optisch nicht zu unterscheiden. Die 64-Bit-Version findet sich unter c:\windows\system32\odbcad32.exe Die 32-Bit-Version hingegen findet sich unter c:\windows\syswow64\odbcad32.exe Ja. Das ist Windows. So ist das.
Ja die "odbcad32.exe" habe ich gefunden und die lag genau wie du gesagt hast Rufus Τ. Firefly schrieb: > c:\windows\syswow64\odbcad32.exe und so sieht bei mir die "ODBC-Datenquelle" seh bitte Anhang: Es sieht alles okay
Schön. Und hast Du Dir auch die System- bzw. Datei-DSNs angesehen? (Einen weiteren Screenshot muss Du davon nicht posten)
:
Bearbeitet durch User
Ja das habe aber ich bin nicht schlauer geworden....
Wie sieht denn der Code aus wo mit der DB kommuniziert wird, bzw. die Verbindung geöffnet wird? Und was wird da konkret für eine Komponente für genutzt? (Ich kenne zwar QT nicht, aber vllt. kann man daran ja trotzdem was erkennen) Wenn ich das hier richtig interpretiere: http://qt-project.org/forums/viewthread/19174 ...gibt es da bei QT scheinbar irgendwelche Klassen, die für den DB-Zugriff verantwortlich sind und dort selbst auch Treiber genannt werden? D.h. das Problem liegt ggf. an der QT-Runtime die nicht korrekt/vollständig genug auf dem Zielrechner angekommen ist oder wo Teile nicht gefunden werden?
hier ist meine Klasse, die für die DatenBankverbindung verantwortlich ist: Header File:
1 | class DatabaseManager |
2 | { |
3 | public: |
4 | static DatabaseManager &getInstance(); |
5 | static QSqlDatabase db; |
6 | static bool createConnection(); |
7 | ...... |
8 | }; |
Cpp File:
1 | #include "DatabaseManager.h" |
2 | |
3 | QSqlDatabase DatabaseManager::db = QSqlDatabase::addDatabase("QODBC"); |
4 | DatabaseManager::DatabaseManager(void) |
5 | { |
6 | } |
7 | |
8 | DatabaseManager::~DatabaseManager(void) |
9 | { |
10 | db.close(); |
11 | } |
12 | DatabaseManager &DatabaseManager::getInstance() |
13 | { |
14 | static DatabaseManager databaseManager; |
15 | return databaseManager; |
16 | } |
17 | |
18 | bool DatabaseManager::createConnection() |
19 | { |
20 | db.setDatabaseName("Driver={Microsoft Access Driver (*.mdb, *.accdb)};DSN='';DBQ=C:/Messungen/TestDB.accdb"); |
21 | |
22 | if (!db.open()){ |
23 | QMessageBox::critical(0, |
24 | QObject::tr("Database Error Connection"), db.lastError().text()); |
25 | return false; |
26 | } |
27 | |
28 | return true; |
29 | } |
Ich habe dann eine Installer daraus gemacht wo ich dann auf beliebige PC installieren kann. Bei mir funktioniert einwandfrei und ich kann die DB öffnen. Die nötige Dll sind auch bei der Installer von daher nach meine Einschätzung muss es eigentlich alles okay sein. Ich komme zu ersten mal mit der Datenbank in Berührung und weiss es wirklich nicht wo das Probelem sein kann.
Man könnte mit z.B. filemon mal schauen was er so alles an *.dlls versucht zu laden und ob da ggf. eine fehlen könnte.
bluppdidupp schrieb: > Man könnte mit z.B. filemon mal schauen was er so alles an *.dlls > versucht zu laden und ob da ggf. eine fehlen könnte. Was meinst du genau?
Ich benutze aber Access Datenbank bzw. QODBC und ich habe folgende DLL file miteingepackt. QSQL4.dll QSQLODBC4.dLL QSQLPSQL4.dll QSQLLITE4.dll und trotzdem bekomme ich immmer die gleiche Fehlermeldung. Wie gesagt auf mein PC funktioniert aber in eine andere PC leider nit. Was muss ich noch als DLL miteinpacken?
David schrieb: > Ich benutze aber Access Datenbank bzw. QODBC und ich habe folgende DLL > file miteingepackt. > > QSQL4.dll > QSQLODBC4.dLL > QSQLPSQL4.dll > QSQLLITE4.dll > und trotzdem bekomme ich immmer die gleiche Fehlermeldung. nein, für ODBC wird wohl nur die QSQLODBC4.dLL verwendet. Hast du mal genau den Treibername zwischen den beiden PCs verglichen? Oder als alternative einfach mal eine DSN anlegen und schauen ob das damit geht.
David schrieb: > Was meinst du genau? Bei filemon/process monitor wird angezeigt welche Dateien die Anwendung versucht zu laden, damit kann man schonmal seltsame Probleme aufdecken. z.B. kann es sein, dass er zwar die "QSQLODBC4.dLL" findet, diese aber wiederum Abhängigkeiten hat die man aus irgendwelchen Gründen auf dem Zielrechner nicht hat. Oder man kann damit auch sehen, ob er *.dlls ggf. im falschen Ordner sucht.
bluppdidupp schrieb: > David schrieb: >> Was meinst du genau? > > Bei filemon/process monitor wird angezeigt welche Dateien die Anwendung > versucht zu laden, damit kann man schonmal seltsame Probleme aufdecken. > z.B. kann es sein, dass er zwar die "QSQLODBC4.dLL" findet, diese aber > wiederum Abhängigkeiten hat die man aus irgendwelchen Gründen auf dem > Zielrechner nicht hat. Oder man kann damit auch sehen, ob er *.dlls ggf. > im falschen Ordner sucht. Bei diesem programm "Prozess Monitor" muss ich immer die Admin rechte haben?
Hallo, Nach der Installation des Prozess Monitors habe ich festgestellt, dass der Installer auf der Ordner, wo QT installiert ist zugreift. Mir ist dieses Zugriff unerklärlich?
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.